Я должен сохранить Перечислимый идентификатор/значения в базе данных или перечислении C#?

вы можете создать более конкретное правило CSS, например:

<div class="withoutBorder x-splitter-focus">/div>

.x-splitter-focus:after {
     position: absolute;
     content: ' ';
     top: 0px;
     right: 0px;
     bottom: 0px;
     left: 0px;
     border: 2px solid #fff;
     pointer-events: none; 
}

.withoutBorder.x-splitter-focus:after {
     position: absolute;
     content: ' ';
     top: 0px;
     right: 0px;
     bottom: 0px;
     left: 0px;
     border: none;
     pointer-events: none; 
}

В этом примере этот div не будет иметь границы, поскольку второе правило css является более конкретным, поэтому все элементы с x-splitter-focus и withoutBorder класс не будет иметь границы

11
задан Peter Mortensen 27 November 2010 в 19:42
поделиться

4 ответа

Что не так с обоими? Если значения определены или изменяются пользователем, определенно enum не подойдет.

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

12
ответ дан 3 December 2019 в 06:22
поделиться

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

Таблицы поиска:

  • Можно применять ссылочную целостность через внешние ключи
  • Простое добавление или удаление существующих значений
  • Таблица может быть расширена для добавления дополнительных полей (активный флаг и т. д.)
  • Требуется дополнительный класс при использовании бизнес-объектов
  • Простое в использовании значение и описание в отчетах

Перечисление:

  • Проверка ограничения может обеспечить целостность данных
  • Лучший выбор, если код должен использовать значение для ветвления (например, x == SalesType.Web против x == "WEB")
  • Требуется выпуск программного обеспечения для изменения значений
  • Невозможно отобразить описание в запросах SQL (без CASE)
  • Enum может не подходить для отображения в пользовательском интерфейсе (есть обходные пути)
7
ответ дан 3 December 2019 в 06:22
поделиться

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

0
ответ дан 3 December 2019 в 06:22
поделиться

В моих проектах я использую приложение dbscript для генерации констант C # из базы данных, поэтому код всегда соответствует значениям в db.

Конечно, вам нужно только иметь C # перечисляет, если ваш код делает что-то конкретное в зависимости от значения поля Type.

0
ответ дан 3 December 2019 в 06:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: