使用Nhibernate + Repository模式推薦的方法是什麼?NHibernate和Repository模式
周圍有太多不同的文章和意見,我不知道要採取什麼樣的路徑。例如,Take this lengthy article。它給出了Query對象的一個例子,但是每個具體的存儲庫在其構造函數中接受一個ISession
。在我的BL(業務層)中,我應該關心NH會話?
創建一堆存儲庫,每個存儲庫都有一堆特定的方法?
顯然,這是太多的工作,因爲BL現在「允許」知道NHibernate(Repository is the new Singleton)?創建一個通用的存儲庫,但暴露
IQueriable<T>
和BL使用LINQ
每一個現在,再有就是它的LINQ到NHibernate的將無法處理查詢(或我需要調整在百次查詢中手動執行一次SQL)。使用自定義回購方法很容易,但依靠LINQ的代碼幾乎不可能。只是因爲LINQ在某些情況下被破解,這是無稽之談。查詢對象?
QueryOver
也是NH特定的,這意味着BL再次意識到DAL實現。又一種方法?
很顯然,我需要能夠管理交易地方,也許使用單位 - 的 - 工作彭定康(雖然也有那許多不同的實現左右)。
你在說DDD中的存儲庫嗎? – mathieu
@mathieu:是的。 (我不確定我可能會想到其他什麼樣的存儲庫)。但更一般地說,我正在尋找一種推薦的方式來組織2011年編寫的應用程序,並附帶所有現代工具和模式。我以前用過幾種方法使用過NHibernate,但是我討厭當我需要在我的BL中引用NH特定的類。 NH似乎並不需要抽象化,這似乎越來越普遍。 – doe
@doe - 當然你的NH特定類只是你的域實體?否則你正在尋找大量的財產重複和映射。 –