синхронизировать перечисление со статическими данными из базы данных - PullRequest
0 голосов
/ 27 ноября 2008

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

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

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

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

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

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

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

спасибо

Ответы [ 2 ]

4 голосов
/ 28 ноября 2008

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

Хорошей отправной точкой была бы выборка Хилтона Гизенова , которая, как мне кажется, точно отвечает на ваш вопрос.

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

0 голосов
/ 27 ноября 2008

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

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

...