синхронизировать перечисление со статическими данными из базы данных

StackOverflow https://stackoverflow.com/questions/322836

  •  11-07-2019
  •  | 
  •  

Вопрос

У меня есть перечисление кодов статуса доставки.И когда я сохраняю данные доставки в базу данных, они сохраняются с внешним ключом в таблице, содержащей те же данные (т.е.те же коды доставки)

Какова наилучшая стратегия для синхронизации перечисления с данными в базе данных?

Вы просто не забываете добавлять в перечисление, когда в базу данных добавляется новый код?

Или загружать данные в словарь при запуске приложения?И использовать словарь вместо перечисления?Хотя это означает, что у меня нет строго типизированного представления данных, чего я определенно хочу.

Или что-то еще?

Данные не очень изменчивы, но новые коды добавляются один раз в каждую голубую луну

Был бы признателен за любые предложения.

Спасибо

Это было полезно?

Решение

Я использую шаблоны T4 в Visual Studio 2008.Таким образом, я могу принудительно генерировать код во время сборки, и он генерирует перечисления для каждой таблицы, которая мне нужна.

Хорошей отправной точкой было бы Образец Хилтона Гизенова, который, я полагаю, в точности отвечает на ваш вопрос.

Более интересным подходом, с другой точки зрения, было бы использовать представления SQL для эмуляции перечислений в базе данных.Таким образом, вы синхронизируете базу данных с вашим кодом на C # (или другими).Вы можете найти отличный пост об этом в блоге Олега Сыча, здесь.

Другие советы

Когда я использую перечисление в коде, я обычно сохраняю форматированное имя как varchar в базе данных, а не сохраняю таблицу значений перечисления в базе данных.Я понимаю, что это не так нормализовано, как хотелось бы, но я считаю, что это лучше, чем пытаться синхронизировать базу данных и мое перечисление.Все, что необходимо, это отформатировать при вставке / обновлении и проанализировать при выборе, чтобы восстановить значение обратно в перечисление.

Я делаю это только тогда, когда считаю, что перечисление будет исправлено - хотя я тоже делал нечастые обновления.Если я считаю, что данные, скорее всего, будут регулярно обновляться, я не буду использовать перечисление и буду иметь отдельную таблицу в базе данных со ссылками на внешние ключи.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top