Должен ли я хранить свои Enums на уровне базы данных или в логике приложения (.NET)? - PullRequest
4 голосов
/ 19 января 2010

У меня есть таблица, давайте назовем ее Objects.У него есть предопределенный набор записей, который выглядит следующим образом:

ObjectId ObjectName

  1       Salmon
  2       Trout
  3       Seabass
  4       Shark

и т. Д.

Итак, это я хотел бы реализовать как-нибудь как перечисление.Но как лучше всего реализовать это в базе данных, создавая для него таблицы, или в логике приложения в файле кода CommonEnums и т. Д.?

Ответы [ 2 ]

6 голосов
/ 19 января 2010

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

Основные значения в Enum, но шаблон автоматически генерирует скрипт для обновления БД

Мы также добавляем свойство к нашим сущностям для предоставления свойства enum вместо целого числа, которое сохраняется в БД

Редактировать: Добавление примера того, как это сделать (В VB.NET:

    <EnumDbTableInfo("TableName", "keyColumn", "descColumn")> _
    Public Enum CasoImportacion As Short

        <Description("")> _
        Normal = 0

        <Description("The First Description")> _
        FirstRealValue = 1

        <Description("A second one")> _
        AnotherValue = 2

        <Description("Third Description")> _
        LastValue = 3


End Enum

Позже класс EnumHelper берет классы с атрибутом EnumDbTableInfo и генерирует скрипт для обновления БД

С наилучшими пожеланиями

0 голосов
/ 19 января 2010

Обычно я использую таблицу внешнего ключа (lookup) в БД, если мне нужно будет объединить таблицы, чтобы получить текстовое описание кода для отображения пользователю, скажем, для отчета или специальных запросов или чего-то еще. Если значение строго внутреннее, то есть никогда никому не отображается, или используется только в моем коде, где я могу перевести его по мере необходимости, я просто наложу ограничение на поле и пропущу таблицу внешнего ключа.

...