题
最近读完了Eric Evans的领域驱动设计(非常翔实,非常愉快的),但是走到第一个大项目,因为完成这本书,得到了问题如何处理的领域模型保存?
我明白到应用服务/存储库,以及它们如何帮助模式,但他们会如何处理模型保存?
我以前的领域模型将保存按照下面的方法调用结构;
ParentClass.Save {
ParentClassDB.Save
ChildObject1.Save
ChildObject1DB.Save
ChildObject2.Save
ChildObject2DB.Save
etc etc
}
请问调用此时,相应的保存例程的子对象的服务采取控制?
解决方案
在DDD,域实体不照顾它的持久性的。你不应该有它Save()
方法,理想的。
您存储库将有这样的Save
方法,其采用实体实例中的参数:
public class PersonRepository
{
//...
public void Save(Person person)
{
this.dataContext.Save(person);
}
//...
}
根据您的堆栈,一个ORM将处理对象保存,否则你将通过构建一个查询,以救人结束,否则你将填充存储过程的参数从您的实例值等。
如果我正确你做了什么的理解,可能需要移动你的域实体把其他地方的持久性逻辑,可能是在仓库,或在您的仓库使用的DAL。
其他提示
你用骨料根源是什么?他们responsilbe救了他们的实体。
如果有大量的修改正在进行一个方式可以是封装了逻辑域中服务和具有服务的处理保存通过总结根。
不隶属于 StackOverflow