Tag: ddd repositories

存储库模式:如何延迟加载? 或者,我应该拆分这个聚合?

我有一个领域模型,有一个编辑器和一个项目的概念。 编辑拥有一些项目,一个项目不仅有一个编辑所有者,而且还有一些编辑成员。 因此,编辑也有一些“join”的项目。 我正在采取DDD方法来build模,并使用Repository模式进行持久化。 但是,我并没有足够好的认识这个模式,以确定我应该怎么做。 我正在假设编辑器和项目可能在相同的聚合,其中根是编辑器。 因此,我可以得到一个编辑,然后列举它的项目,并可以从那里列举项目的成员编辑。 但是,如果我只允许从我的存储库中检索编辑器,那么这是否意味着当我拥有它们的编辑器时,我不得不从存储库中加载所有的项目? 如果我想懒加载成员编辑器,项目需要一个参考资料库以及? 另外,如果我拆分聚合,并有一个编辑器存储库和一个项目存储库,我应该如何处理这两个事务,例如当一个新的项目被添加到编辑器? 例如: Editor e = new Editor("Editor Name"); editorRepository.Add(e); Project p = e.CreateProject("Project Name"); projectRepository.Add(p); // These two lines editorRepository.Save(e); // should be atomic 我误解了Repository模式的意图吗?

实体访问存储库可以吗?

我刚刚开始使用DDD,所以也许这是一个愚蠢的问题… 一个实体访问一个仓库(通过一些IRepository接口)在运行时获取一个值可以吗? 例如,我想强制执行一个属性的“默认”select: class Person { private Company _employer; public Company Employer { get { return _employer; } set { if(value != null) { _employer = value; } else { _employer = employerRepository.GetDefaultEmployer(); } } } … } 我的问题是,这样做是否违反了DDD的原则。 如果不是,我的下一个问题将是提供存储库使用的最佳方式是什么? 是否在Person对象创build时提供? 谢谢,P

什么是聚合根?

我试图让我的头在如何正确使用存储库模式。 总根的核心概念不断涌现。 当searchWeb和Stack Overflow以获得有关聚合根目录的帮助时,我一直在寻找关于它们的讨论以及应该包含基本定义的页面的死链接。 在存储库模式的上下文中, 什么是聚合根?