我一直在使用存儲庫模式(DDD和POEAA)一段時間。然而,我們的一些團隊成員認爲這只是一個額外的抽象層,並且是不必要的。 我可以在他們的論點中看到一些好處。現代的ORM解決方案(NHibernate或EF)幾乎擁有您所需的一切。我搜索並找到了一些關於此主題的文章,如this和counterargument。所以庫模式是一個矯枉過正的?存儲庫模式過度衝擊
10
A
回答
12
這主要取決於問題的複雜性以及域模型在解決方案中扮演的角色。對於簡單的解決方案,Repository可能是矯枉過正的。但對於具有強大語言和不斷髮展的需求/需求的複雜領域,存儲庫是一個非常好的,乾淨的抽象,它擁有域對象生命週期。許多ORM將做大部分工作,但是,在一個複雜的領域中,始終存在一些在存儲庫中有意義的域活動,並且ORM不支持這種活動。
底線:它取決於上下文。
4
在單元測試中模擬數據訪問是我使用存儲庫接口的主要原因。可維護性的另一個原因 - 您可以輕鬆實現緩存策略,或切換到其他數據訪問實現,如從服務而不是數據庫獲取數據。
1
我們在我們的項目中使用存儲庫的一個原因是,它強制實施我們的總根(我們只允許AR的存儲庫),以便正確地處理AR,而不是查詢任何可能影響您的想法。
正如Al提到的那樣..它確實提供了一個很好的界面,可以在單元測試中進行模擬。
相關問題
- 1. 存儲庫模式和存儲過程
- 2. 存儲庫模式
- 3. 存儲庫模式 - 緩存
- 4. 存儲庫模式,使用存儲過程的EF
- 5. 存儲庫模式問題
- 6. Linq2Sql存儲庫模式
- 7. EF和存儲庫模式
- 8. 存儲庫模式與ORM
- 9. 存儲庫模式問題
- 10. 存儲庫模式問題
- 11. LLBLGen和存儲庫模式
- 12. NHibernate存儲庫模式
- 13. 存儲庫模式書籍
- 14. nHibernate [TransactionAttribute]爲UoW衝突與存儲庫模式
- 15. 存儲過程的模式?
- 16. 存儲庫模式和DAL沒有存儲庫模式的DAL中的區別?
- 17. 存儲庫模式中的「模塊」
- 18. 建立一個數據庫,模式,表和存儲過程都在點擊
- 19. 無法從存儲庫轉換爲IRepository UOW存儲庫模式
- 20. 存儲庫模式與存儲庫工廠
- 21. c#存儲庫模式:每個子類有一個存儲庫?
- 22. 存儲庫模式 - 根據類型查找存儲庫
- 23. 存儲庫模式中的共享存儲庫
- 24. 存儲庫模式繼續 - 類方法或存儲庫方法?
- 25. 使用存儲庫模式與EF4加入集合的難度
- 26. 在MVC中設置存儲庫模式
- 27. 存儲庫模式中的事務
- 28. 存儲庫模式和導航屬性
- 29. WPF MVVM - 存儲庫模式查詢
- 30. 查詢與存儲庫模式
你永遠不會因'它取決於'而出錯。 :) – 2010-08-09 21:26:52
@Arnis - 這就是爲什麼,作爲開發人員,我們不只是錘子,我們有一個完整的工具箱。 – Martin 2011-02-15 17:31:06
@Martin有些只有膠帶:) – 2011-02-16 10:16:11