У меня есть перечень кодов статуса доставки. И когда я сохраняю данные о доставке в базу данных, они сохраняются с внешним ключом в таблице, содержащей те же данные (т.е. те же коды доставки).
Какова наилучшая стратегия синхронизации перечисления с данными в базе данных?
Вы просто не забываете добавлять в перечисление, когда новый код добавляется в базу данных?
Или загрузить данные в словарь при запуске приложения? А использовать словарь вместо перечисления? Хотя это означает, что у меня нет строго типизированного представления данных, которое мне определенно нужно.
Или что-то другое?
Данные не очень изменчивы, но новые коды добавляются раз в каждую синюю луну.
Буду признателен за любые предложения.
Благодарность





Когда я использую перечисление в коде, я обычно сохраняю отформатированное имя как varchar в базе данных, а не храню таблицу значений перечисления в базе данных. Я понимаю, что это не так нормализовано, как хотелось бы, но я считаю, что это лучше, чем пытаться синхронизировать базу данных и мое перечисление. Все, что нужно, - это отформатировать при вставке / обновлении и проанализировать при выборе, чтобы восстановить значение обратно в перечисление.
Я делаю это только тогда, когда считаю, что перечисление будет исправлено - хотя я тоже делал нечастые обновления. Если я считаю, что данные будут регулярно обновляться, я не буду использовать перечисление и буду иметь отдельную таблицу в базе данных со ссылками на внешние ключи.
Я использую шаблоны T4 в Visual Studio 2008. Таким образом, я могу принудительно генерировать код во время сборки, и он генерирует перечисления для каждой таблицы, которую я хочу.
Хорошей отправной точкой будет Образец Хилтона Гизенов, который, как мне кажется, точно отвечает на ваш вопрос.
Более интересным подходом с другой точки зрения было бы использование представлений SQL для имитации перечислений в базе данных. Таким образом вы синхронизируете базу данных с вашим кодом C# (или другим). Вы можете найти отличный пост об этом в блоге Олега Сича, здесь.