2011-10-20 118 views
0

我正在嘗試創建一個報告/分析Web應用程序,它將使用MVC3,EF和DDD方法。我很難爲現有數據庫上的聚合表提供實體或對象類。例如,我將Orders和OrderLine作爲聚合,將Customers作爲實體。這三個對象可以使用DDD方法建模,但是如果我想擁有一個OrdersAggregate表,它將包含所有細節(如客戶名稱,付款類型等)。DDD報告方案

我應該在這裏創建一個對象類,其中包含客戶名稱,付款類型等,還是讓EF創建他的sql查詢並加入相關表格?我擔心這裏的表現,這將在雲端和大量的交易中等待。

有什麼建議嗎?

回答

0

我的建議是爲此創建一個DTO類,並使用從SQL命令(手工製作)返回的數據集填充您的聯接和關係。

只是一個建議,因爲我用這種方法來解決類似的問題。

+0

是的,我也這麼想,但我想在整個項目中使用EF – gnaungayan

2

您可以在某些方面使用CQRShere,以將讀取模型與寫入分離。

不必實現整個架構,只是將讀取模型和服務分離開來,這使得讀取模型將自定義的DTO平放置以用於放置和分析目的,另一方面在寫入模型中使用強域模型用於業務邏輯處理。

檢查thisthis例如

+0

但是,這仍然會做聯接嗎?或者你的DTO緩存了之前獲取的數據? – gnaungayan

+1

您有兩種方法,可以根據請求獲取和加入,或者更好地構建緩存,但最好但更復雜的方法是創建另一個具有用於查詢的自定義表(平面)的數據庫,並且只要域層更改狀態發佈事件並進行製作一個處理程序將來自狀態變化的數據變平並將其放入查詢數據庫 –

+0

因此OrderAggregate表將在我的模型類中處於正確的位置嗎?或者這將成爲我的DTO? – gnaungayan

1

我的經驗是DDD不適合做報告,統計等 像吉米尼爾森告訴你定期dataacces繞過您的域名有專家。 如果你只是想一想,呈現數據時沒有太多的領域邏輯。它只是看起來像ORM,存儲庫,aggregateroots等圖層和DDD風格的開銷,僅用於查看數據。

只是個人意見。 /祝你好運和最好的問候馬格努斯