【发布时间】:2011-06-28 10:14:10
【问题描述】:
我在不使用 ORM 的 .NET C# 应用程序中使用存储库模式。但是我遇到的问题是如何填充实体的一对多列表属性。例如如果客户有一个订单列表,即如果 Customer 类有一个名为 Orders 的 List 属性,而我的存储库有一个名为 GetCustomerById 的方法,那么?
- 我应该在 GetCustomerById 方法中加载订单列表吗?
- 如果订单本身有另一个列表属性等等怎么办?
- 如果我想做延迟加载怎么办?我应该在哪里放置代码以在客户中加载 Orders 属性?在 Orders 属性中获取 {} 访问器?但是然后我必须将存储库注入域实体?我认为这不是正确的解决方案。
这也引发了对更改跟踪、删除等功能的疑问?所以我认为最终结果是我可以在没有 ORM 的情况下做 DDD 吗?
但现在我只对延迟加载域实体中的列表属性感兴趣?有什么想法吗?
纳比尔
我假设对于在域驱动设计中不使用 ORM 的任何人来说,这是一个非常常见的问题?有什么想法吗?
【问题讨论】:
-
听起来你需要一个 ORM。大多数 ORM 都具有这些功能。编写/维护自己的代码是一项巨大的投资。
-
你在问我可以不用 ORM 来做这件事,而是你尝试制作自己的 ORM。
-
我和你有同样的问题,我已经在博客上写了solveme.wordpress.com/2009/11/11/… 希望有一天 DDD 社区会发布一个无需任何 ORM 即可工作的示例应用程序
标签: c# orm domain-driven-design repository-pattern