Могут ли генераторы идентификаторов использоваться для других столбцов с помощью NHibernate? - PullRequest
1 голос
/ 26 августа 2010

Я создаю функцию выставления счета и хочу использовать счетчик для номера счета, но вместо написания реализации мне было интересно, возможно ли использовать существующий генератор идентификаторов в NHibernate для этого свойства?

Ответы [ 2 ]

0 голосов
/ 28 августа 2010

Технически, да, вы можете.Все они являются публичными классами, живущими в пространстве имен NHibernate.Id, поэтому вы можете создавать экземпляры и использовать любые из них в любое время.

На практике это зависит от того, какой из них вы хотите использовать.Некоторые из них довольно просты и не требуют каких-либо настроек или зависимостей, например CounterGenerator, GuidCombGenerator или UUIDStringGenerator.Другим нужна сессия, как NativeGuidGenerator.Другие должны быть настроены до того, как их можно будет использовать, например SequenceHiLoGenerator.

Я не думаю, что NHibernate поддерживает использование генераторов, отличных от идентификаторов и idbags, поэтому их использование полностью зависит от вас.

0 голосов
/ 26 августа 2010

Хотя для NHibernate есть множество генераторов идентичности, Айенде, то есть Мистер NHibernate сам советует против этого:

Прежде чем начать, я хотелОбъясните, что NHibernate полностью поддерживает генератор идентификаторов, и вы можете работать с ним легко и безболезненно.

Однако в использовании системы идентификации в вашей системе есть определенные последствия.Тунец делает большую работу по их детализации.Наиболее распространенная проблема, с которой вы столкнетесь, заключается в том, что идентичность нарушает понятие единицы работы.Когда мы используем идентичность, мы должны вставить значение в базу данных, как только мы его получим, вместо того, чтобы откладывать на более позднее время.Это также делает пакетирование бесполезным.

И просто для того, чтобы добавить дополнительную глазурь на торт.В SQL 2005 и SQL 2008 идентичность нарушена.

Я знаю, что «выбрать не сломан» большую часть времени, но на этот раз, похоже, это так: -)

МыНастоятельно рекомендуем использовать другую стратегию генератора, например, guid.comb (похожий на новый последовательный идентификатор) или HiLo (который также генерирует читаемые человеком значения).

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