我有以下對象模型(基於不能更改的舊式表結構)。將NHibernate映射到「非規範化」表
public class Store
Contact BillingContact {get;set;}
Contact SetupContact {get;set;}
ISet<Contact> Contacts {get;set;}
在這種情況下,當我創建一個新的商店時,我還將一個新聯繫人添加到聯繫人列表。我還想將該聯繫人設置爲BillingContact和SetupContact的參考。然後將該批次保存爲單個交易。如果我保存商店時未將參考設置爲BillingContact和SetupContact,則一切正常。但是當我設置這些屬性時,NHibernate試圖在Insert之後執行Update來更新引用,並且由於Store尚未被實際插入而出現錯誤。
它看起來像我可能不得不使用觸發器或存儲過程,但我希望有一個NHibernate的方式。
的SQL正在運行的是
INSERT INTO CONTACTS (Id, CompanyId, Name, etc.) Values (1234, NULL, "My Contact", etc.) NOTE: 1234 was retrieved from a sequence
然後
INSERT INTO company (Id, BillingContactId, SetupContactId) Values (8946, 1234, 1234)
然後 - 錯誤就是因爲這個
UPDATE CONTACTS SET CompanyId=8946 WHERE CUSTOMER_ID = 1234 AND TimeStamp = xxx
由於插入尚未提交最後陳述時失敗。
的誤差 行被其它事務更新或刪除(或者未保存值的映射是不正確的)客戶#1234]
你可以包括Sql nHibernate的運行,你的保存代碼和你得到的錯誤嗎? – 2012-02-07 03:24:02