Автоматическое сопоставление идентификаторов без первичных ключей с использованием Fluent NHibernate - PullRequest
6 голосов
/ 29 марта 2011

Мне нужно управлять дополнительным столбцом автоинкремента, используя Fluent NHibernate.

Все классы моего домена используют Assigned Guid в качестве идентификатора, но в конкретной сущности мне нужно дополнительное значение автоинкремента.Я попробовал следующее сопоставление, столбец хорошо создан в SQL Server, но спецификация идентификации не установлена.

        Id(x => x.OrderId).GeneratedBy.Assigned();

        Map(x => x.TicketNumber).ReadOnly().Generated.Always().Not.Nullable();

Любая помощь?

Ответы [ 3 ]

5 голосов
/ 09 августа 2011

Если вы еще не ответили на этот вопрос, возможно, вам удастся найти некоторую помощь в этом сообщении SO: свободное свойство nhibernate без ключа (Id)

В спящем режиме:

<property name="Foo" generated="always" update="false" insert="false" />

и свободный NHibernate:

Map(x => x.Foo).ReadOnly().Generated.Always();

и, возможно, эта запись на форуме Hibernate: https://forum.hibernate.org/viewtopic.php?f=1&t=954375

"сгенерированный означает, что значение генерируется базой данных . Таким образом, вам понадобится триггер и т. Д. Для фактической установки этих значений."

2 голосов
/ 26 мая 2015
Map(x => x.TicketNumber).
   .CustomSqlType("INT IDENTITY(1,1)")
   .Not
   .Nullable()
   .ReadOnly()
   .Generated.Insert();
1 голос
/ 29 марта 2011

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

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