2
我正在使用NHibernate/Fluent NHibernate和Oracle,我遇到了一個問題。我有定義瞭如下映射文件:如何正確使用Fluent NHibernate獲取Oracle中的下一個序列?
public OrderMap()
{
Table("ORDERS");
Id(x => x.OrderId, "ORDER_ID").GeneratedBy.Sequence("select ORDERS_SQ.nextval from orders");
Map(x => x.CreatedBy, "CREATED_BY");
Map(x => x.OrderStatusCd, "ORDER_STATUS_CD");
Map(x => x.StoreGroupId, "STORE_GROUP_ID");
Map(x => x.IsActive, "IS_ACTIVE");
Map(x => x.OrderDate, "ORDER_DATE");
}
當我去跑項目中,我得到以下錯誤:
,同時創造一個SessionFactory使用了無效的或不完整的配置。
如果我刪除.GeneratedBy.Sequence("select ORDERS_SQ.nextval from orders");
行,應用程序將運行,但我在保存記錄時顯然沒有看到下一個序列。我試過只做.GeneratedBy.Sequence("ORDERS_SQ");
,但我似乎沒有得到任何正確的工作。
任何人都可以告訴我正確的方式來使用流利NHibernate正確地獲得下一個可用序列嗎?
我使用流利的NHibernate 1.1與NHibernate 3.0測試版。
謝謝。
這是正確的,但我的問題的一部分是,ID字段的數據類型不符合整體式檢查功能NHibernate創建之前做序列。改變後,一切正常。 – 2010-11-09 18:38:39
你知道是否有辦法在一次往返中插入時返回生成的序列值? – Tsar 2012-08-13 15:15:07
@Tsar當NHibernate插入一條記錄時,Save()方法返回帶有新ID的完整對象。在Update()的情況下,它會更新給定的記錄。 – rebelliard 2012-08-13 15:44:54