Nhibernate и перечисления - PullRequest
       1

Nhibernate и перечисления

3 голосов
/ 14 января 2012

Хорошая ли привычка использовать перечисления с базами данных (NHibernate + mysql)?Какие преимущества и недостатки?Влияет ли это на эффективность базы данных?

Ответы [ 2 ]

2 голосов
/ 14 января 2012

Хорошая ли привычка использовать перечисления с базами данных (NHibernate + mysql)?

Я думаю, что с точки зрения программиста определенно имеет смысл использовать перечисления там, где это применимо. Это делает код более читабельным и исключает «неверных» значений в вашей базе данных.

Каковы преимущества и недостатки? Влияет ли это на эффективность базы данных?

Преимущества:

  1. Читабельность с кода
  2. Целостность данных

Недостатки:

  1. Затраты на преобразование перечислений в типы баз данных. Хотя это, вероятно, незначительно. Не проверял это, но я предполагаю, что это так.

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

0 голосов
/ 15 января 2012

Я думаю, с точки зрения кода, перечисления определенно имеют смысл.Однако, если вы используете NHibernate для генерации схемы базы данных, ищите ее, используя MySQL Enum Data Type .Это сохранит ваши перечисления в виде строк, но обеспечит ввод только допустимых значений.Это может быть дорогостоящим с точки зрения хранения, а также при попытке рефакторинга.Тип базы данных enum будет обрабатывать проверку на уровне базы данных для вас, поэтому произвольные обновления будут менее беспокоящими, я предпочитаю сохранять числовое значение и полагаться на приложение для проверки, потому что это упрощает добавление или переименование членов enum.*

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...