2010-07-23 294 views
0

我仍然在學習DDD。我正在編寫一個ASP.NET MVC應用程序,我有幾個下拉菜單,我需要從數據庫中填充。我爲每種類型創建了映射實體(狀態,結果等)填充下拉列表/選擇列表

我無法弄清楚的是我應該從哪裏獲取數據。爲每種類型的選擇列表創建一個單獨的存儲庫時,如果必須將大量存儲庫注入MVC​​控制器,就會感覺很痛苦。此外,所有這些選擇列表都是隻讀的,因此每個選擇列表的存儲庫看起來過度。爲所有選擇列表類型創建單個超級存儲庫看起來也不正確,因爲存儲庫應該像一個一個實體類型的集合。

我一直在閱讀一些有關CQS和報告層的內容,但我不知道如何正確實施。

回答

1

首先 - 如果您對DDD感覺不舒服,甚至不要看CQRS。我的意思是 - 看看,但不要試圖用它來實現真正的項目。然而。

當我們沒有從應用程序的寫入端分離讀取時,存儲庫會被混淆,導致一些混合的責任。

從一個角度來看 - 它負責持久化聚合根,從其他角度 - 它也負責報告。

這意味着 - 如果存儲庫包含僅用於演示目的檢索數據的功能,則沒有任何錯誤(至少在我的腦海中)。

在你的情況 - 我只是使用來自倉庫的數據建立下拉菜單。所以 - 產品下拉列表將從ProductRepository.Find(bySomething)(或者在我決定使用通用存儲庫的情況下爲Repository<Product>(bySomething))獲取數據。

P.s.被警告說DDD對模式沒什麼太多要求。它更多的是關於無處不在的語言,並使你的領域模型明確。