在域驱动设计中获取操作

时间:2013-09-23 16:07:58

标签: c# domain-driven-design repository-pattern

我有一个实体A,它与实体B和C有关系。

实体B和C只能在我在事务中创建实体A时创建。

因此我只有一个A-Repository.cs

当我在A的上下文中对实体B进行读取/获取操作时,或者在A的上下文之外对C进行读取/获取操作。

我在哪里进行这些操作?

3 个答案:

答案 0 :(得分:2)

在A上,假设您正在应用战术模式,假设A是您的聚合的根实体。

答案 1 :(得分:0)

您对B和C的获取操作属于A.因此,在A中,您正在查看public B b{get;}public C c{get;}等代码。

答案 2 :(得分:0)

根据聚合的定义,您需要从存储库中检索聚合(在您的情况下为A),然后遍历对象图以获取本地实体(在您的情况下为B和C)。

A a = aRepository.findBy(id);
B b = a.getB();
C c = a.getC();

必须解决一些基础设施问题。如果您的域模型也是您的持久模型,并且您的商店B和C在与A的单独表格中分开,那么您可能需要一个支持延迟加载的orm框架。