2011-03-29 94 views
6

我需要使用Fluent NHibernate来管理额外的Auto Increment列。使用Fluent NHibernate的非主键身份自动增量映射

我所有的域类都使用Assigned Guid作为ID,但在特定实体中我需要一个额外的自动增量值。

我试过以下映射,该列在SQL Server中很好创建,但未设置标识规范。

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

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

任何帮助?

回答

1

我假设你正尝试在NHibernate中使用内置的模式生成工具来执行此操作。不幸的是,使用这个工具,你不可能做你所要求的。它将设置身份标志的唯一列是主键列。因此,除非此列是主键的一部分,否则您需要手动方法将其设置为“标识”列。

5

在关闭的机会,你还在为这个问题的答案后,你可以找到在这个SO后一些帮助:fluent nhibernate auto increment non key (Id) property

在Hibernate:

<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
Map(x => x.TicketNumber). 
    .CustomSqlType("INT IDENTITY(1,1)") 
    .Not 
    .Nullable() 
    .ReadOnly() 
    .Generated.Insert(); 
相关问题