我想按照here所述的方式在WPF應用程序中實現每個商業交易模式的對話。不幸的是,這個應用程序在所有表中都有一個使用SQL Server生成的身份密鑰的大型現有數據庫每個商業交易和身份密鑰的NHibernate對話
我知道,添加一個新的對象到NHibernate會話將導致它被插入,如果它有一個身份的關鍵。即使我們還沒有完成完成整個工作單元,法比奧也會在每次請求結束時提交當前事務的模式。
如果我理解正確,這意味着我的對象將被插入到數據庫中,即使放棄工作單元也不會被刪除。所以:
- 這種模式是否與身份密鑰不兼容?
- 有沒有合理的解決辦法?
- 在這種情況下,我可以使用更好的模式嗎?
編輯#1:
從法比奧一些附加的註釋是here。
編輯#2:
進一步探索具有使我的堅持(...)方法,類似於保存(...)只是不同的,足以造成混淆。從hibernate FAQs採取的這種說法很有趣:
的persist()方法也保證 ,如果它被稱爲的 事務邊界之外也不會執行INSERT語句 。在長時間運行的對話中,這是有用的 擴展的會話/持久性上下文中的 。
當然,如果它確保在交易邊界內部相同,它會更有用嗎?無論如何,我都沒有使用交易的印象。
我剛剛嘗試過Session.Persist(),它立即執行插入操作,儘管我沒有打開事務 - 如果這就是它的意思,它不起作用(至少在2.1上)。 – Sam 2009-09-15 02:26:40