我認爲這個問題在具有中等大小模型的Web應用程序中很常見。 比方說,我有一個SportCenter類的籃球場列表,當 顯示保留或屬性的籃球場我仍然想顯示 關於它所屬的體育中心的一些信息。ASP.Net MVC,ORM和「重」對象
我使用ASP.Net MVC和NHibernate爲數據層,所以我的問題是: 是值得做NHibernate的加載整個SportCenter實例(實際上 包含的集合都懶加載但仍然類「重」) 與我的BasketballField及其相關信息只是爲了展示 體育中心的幾個領域?
在另一方面,建築非常的HQL微調查詢帶我回到老 經典ASP天,手工製作的SQL查詢...
任何最佳實踐建議?
謝謝大家,彼得。
但是,屏幕特定的DTO使得業務層在UI層上感知和依賴(至少在語義上),這是不好的。即使只是爲了生成「視圖」而從nHibernate中寫出特定的查詢, 也會破壞僅nHibernate的數據訪問層。 無論如何,你的觀點聽起來很有動力,你的意思是什麼「吸氣者往往是一個反模式,當涉及到一個良好的領域」? 謝謝你的回答,彼得。 – Peter 2009-09-01 20:49:12
實際上,你的DTO應該存在於一個單獨的查詢層中,其唯一的工作是滿足客戶端查詢的需要,在這種情況下,依賴關係是(非常好)。 業務層(或在我的情況下是域層)存在服務命令。 獲得者的問題是他們很快導致貧血域。如果每個人都可以獲得所有的數據(應該是私人的),那他們爲什麼需要你爲他們做任何事情?自從我在實用程序員中讀到「告訴,不要問」的原則以來,我一直在努力在我的設計中保留更多的面向對象。 – 2009-09-01 21:01:25