我想知道什麼考慮在以下情況下更好或更正確的做法:如何使用NHibernate從聚合根的子集合中最好地選擇一個實體?
我已經制定了下列商業實體與NHibernate:
- 牆
- WallPost
- WallPostComment
牆有零對多WallPosts。 WallPost具有零到多個WallPostComments。聚合根是Wall。
我正在寫一個任務,將WallPostComment添加到WallPost。該應用程序是一個MVC應用程序,添加新WallPostComment的請求包含該評論所屬的WallPost的ID。爲了添加評論我需要檢索它應該被添加到的帖子。我的問題是:做這件事的最好/最正確的方法是什麼?
到目前爲止,我已經嘗試了兩種方法,一種感覺更「正確」,雖然效率很低。另一種更高效的方法認爲是錯誤的。
1)我從會話中加載Wall聚合根,並從Posts集合中選擇FirstOrDefault。這感覺是'正確的',因爲我通過聚合根訪問牆貼,但這樣做會導致從數據庫中取出所有牆貼(無界結果集)。
2)我使用請求傳遞給我的wallPostId直接從會話加載牆貼。這感覺是'錯誤的',因爲我正在繞過聚合根目錄 - 但它是單行數據在數據庫上的單擊。
哪種方法更好?你還有什麼其他建議?
這是一個很好的觀點。我一直認爲牆是一個實體和一個聚合根 - 但是當我讀到你的答案時,我還有另外一個'哈哈'!時刻。我將不得不更多地思考這一點,但情況可能如此。事實上,這個答案與穆罕默德的答案一樣正確 - 它只取決於域名,不是! –