我已經閱讀了多個地方使用NHibernate的標識符爲 主鍵被認爲是不好的做法,因爲ID是在服務器端產生的 ,因此我們需要從服務器回覆關於生成的ID。 (我想我也看到了由Ayende後,指出MS-SQL服務器可能有問題 產生標識符,並且這可能會導致主鍵衝突)現在使用NHibernate標識符標識生成器
,比方說,我有一個非常簡單的域模型:博客和帖子。其中,每一個博客可以有 許多職位,每個職位屬於EXACTLY一個博客(一對多關係) 但我們只保存後 - >博客的關係,而不是博客 - >文章
現在假設我使用NHibernate的帶有Idenitifer ID生成這樣,我不使用級聯,所以我在我的C#代碼是這樣的:
SaveBlogInTransaction(blog1);
SavePostsInTransaction(blog1posts);
現在,我的問題是這樣的:如果插入可以在只做過一個地方我的代碼 (沒有併發問題),是否可以保證帖子與第eir博客在db中會有效嗎?
我的意思是讓我們來看看在帖子表模式:
帖子ID,PostName,PostType,BlogId
是它保證了BlogId將是有效的?
注:每個方法可以作爲一個事務,並在它提交到數據庫
我同意肖恩,使用另一個生成器策略將做更有效的交易,因爲NHibernate不需要查詢數據庫來獲取插入的id。 – 2009-10-27 14:27:18