2013-05-13 63 views
3

我們有一個映射在Fluent NHibernate中的表,由一個Hilo序列生成一個Id。如何使用序列作爲NHibernate中ID的默認值?

this.Id(x => x.Id).GeneratedBy.SeqHiLo("seq_hp", "1000"); 

我們現在需要在Id(設置爲下一個序列值)上指定一個默認值,以使它適用於SQL合併語句。

但是,只有在生成表之後,NHibernate纔會生成序列,因此下一個語句將失敗,因爲沒有(尚)序列。

this.Id(x => x.Id).GeneratedBy.SeqHiLo("seq_hp", "1000") 
        .Default("next value for seq_hp"); 

在創建表之前,NHibernate中是否有任何指定創建序列的方法? 我們使用Fluent映射,但歡迎NHibernate的代碼或XML映射解決方案。

回答

1

另一種方式也是可行的。使用Sql實施IAuxiliaryDatabaseObject以添加列的默認值。有基類AbstractAuxiliaryDatabaseObject它提供了一個默認的實現。

+0

謝謝,但正如我所解釋的這個解決方案不工作。它在創建序列之前首先創建表格。你有關於這個IAuxiliaryObject的更多信息嗎?使用Google搜索時我找不到多少東西。 – Ronald 2013-05-14 07:25:43

+0

我發現它,它的作品完美。最簡單的事情是實現一個實現AbstractAuxiliaryDatabaseObject的類。謝謝。 – Ronald 2013-05-14 08:27:43

+0

啊對,我拼錯了。修復了答案並添加了基類 – Firo 2013-05-14 11:25:07

相關問題