我想設置適當的域架構使用流利NHibernate和Linq到NHibernate。我有我的控制器調用我的存儲庫類,這些類做NHibernate thang下,並傳回ICollections的數據。這似乎工作得很好,因爲它抽象了數據訪問並保持了NHibernate的「精細打印」功能。NHibernate查詢邏輯放在哪裏?
但是,現在我發現我的控制器需要在不同的上下文中使用相同的數據調用。例如,我的repo返回一個用戶列表。當我想顯示用戶列表時,這很好,但是當我想開始使用子類來顯示角色等時,我遇到了SELECT N + 1問題。我知道如何在NHibernate中改變它,所以它使用連接,但我的具體問題是我在哪裏放這個邏輯?我不希望每個GetAllUsers()調用都返回角色,但我確實希望其中的一些。
因此,這裏有我的三個選項,我看到:
- 變化在我的映射設置這樣的角色加入到我的查詢。
- 創建兩個Repository調用 - GetAllUsers()和GetUsersAndRoles()。
- 將我的IQueryable對象從Repository返回到Controller,並使用NHibernate Expand方法。
對不起,如果我沒有解釋得很好。我只是跳進DDD,很多這個術語對我來說還是新的。謝謝!
我喜歡這個答案,謝謝!現在我需要將其轉換爲Linq ... – 2010-05-11 14:14:32