回答
這是一個宗教問題。 有些人認爲這沒有問題,而其他人可能認爲這樣做是異端。雖然我通常總是將我的Repository遠離我的領域模型(並且有一個上游服務對象處理Repository),但我有一個項目「需要」讓Repository可以從領域模型訪問。 這是由於Domain對象需要根據業務邏輯=>使用規範對象/ Linq到nHibernate(關於如何過濾屬於該域對象的數據的責任和知識)和/或性能原因來檢索特定數據。
這樣做的一個警告是如何獲得對Domain對象的Repository引用 - 在這種情況下,我使用了IOC工具的Constructor注入。
你是否應該這樣做或不取決於你的解決方案/用例/使用技術等等
可以嗎?是的。
應注意什麼?-No。
所有的答案都不過上下文敏感的,和你不提供你的。
通用建議是尋找「服務」或「規範」類型。
感謝Martin的回覆 我也認爲Enities不應該調用存儲庫,但是在一本書中,作者給出了他從Person Entity中調用Repository的例子,該書是Martin Fowler的「企業應用程序架構模式」。 請指教 – batwadi 2009-10-19 13:47:18
行爲,是什麼,IT,IS。 Eric從稱爲「QueryService」的經紀賬戶實體調用存儲庫類似於實用程序。他提到這對於一個真正的項目來說不是一個好設計。所以你會怎麼做?
public class Clerk
{
public Clerk()
{
}
//Store Report in Database
public void File(Report);
{
ReportRepository.Add(Report);
}
}
你可以這樣做,但最好告訴Clerk使用哪個Repository。
public class Clerk
{
private IReportRepository _reportRepository;
public Clerk(IReportRepository ReportRepository)
{
this._reportRepository = ReportRepository
}
//Store Report in Database
public void File(Report);
{
this._reportRepository.Add(Report);
}
}
- 1. 實體vs聚合vs聚合根
- 2. DDD,聚合根和實體
- 3. 倉庫模式聚合和聚合根與實體框架4.0
- 4. DDD:可以包含聚合根內部的實體列表
- 5. 哪些實體應該是聚合根?
- 6. 訪問不是聚合根的實體
- 7. ASP.NET MVC /實體框架:通過聚合根存儲庫訪問聚合對象
- 8. 一個人可以聚合根引用另一個聚合根的非聚合根?
- 9. 存儲庫模式和聚合根模式以及實體框架
- 10. 通過子實體上的屬性過濾聚合根實體和子實體
- 11. 如何實現聚合根存儲庫添加與EF的子實體
- 12. 創建子實體的聚合根和實例
- 13. 使用域驅動設計與實體框架聚合根
- 14. 單個實體可以是非聚合的嗎?
- 15. 指向根實體的DDD /聚集根/成員實體
- 16. 複雜的實體聚合
- 17. 如果實體成爲聚合的根,聚合根是使用根實體的現有ID還是AR創建自己的ID?
- 18. 需要共享實體的聚合體
- 19. 檢測聚合根目錄中實體的更改
- 20. DDD和實體框架:從聚合根拉兒童
- 21. EntityFramework - 保存聚合包含實體的根
- 22. 你如何堅持/恢復DDD實體的聚合根?
- 23. ASP.NET MVC Action方法如何訪問聚合根的子實體?
- 24. 對一個聚合根內的實體的操作
- 25. 如何訪問我的聚合根後面的實體?
- 26. 如何定義聚合和聚合根以及聚合之間的鏈接
- 27. 存儲庫模式 - 聚合根
- 28. 存儲庫模式中的聚合根
- 29. 只有聚合根的存儲庫!
- 30. DDD聚合根/存儲庫結構
我的意思不是密集或任何東西,但我們應該知道埃裏克是誰? – 2009-10-18 07:14:33
是啊,DDD + Eric =埃裏克埃文斯,大家都知道。 – alexn 2009-10-18 14:38:06
另請參閱:[DDD - 實體無法直接訪問存儲庫的規則](http://stackoverflow.com/questions/5694241/ddd-the-rule-that-entities-cant-access-repositories-directly) – codeulike 2011-05-05 17:07:16