2011-03-29 95 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(); 
相關問題