我研究了领域驱动设计中的仓储,并发现有太多不同的东西。每个人对仓储都有不同的说法,这让我感到困惑。
我想知道:
- 仓储应包含哪些方法?
- 仓储一定要(或者更接近)返回什么?
谢谢。
我研究了领域驱动设计中的仓储,并发现有太多不同的东西。每个人对仓储都有不同的说法,这让我感到困惑。
我想知道:
谢谢。
void Save(Aggregate aggregate)
和一个Aggregate Get(Guid id)
方法。返回的聚合始终是完全构成的。void Activate(Guid id)
之类的内容。这仅仅是为了避免操作比必要更多的数据。int Count(Query.Specification specification)
,或者返回一系列“读模型”实例。仓储模式将一个类型的所有对象表示为一个概念集合(通常是模拟的)。它的行为类似于一个集合,但具有更复杂的查询能力。适当类型的对象会被添加和删除,而仓储背后的机制会将它们插入或从数据库中删除。
...
对于每种需要全局访问的对象类型,请创建一个对象,该对象可以提供该类型的所有对象的内存集合的假象。
仓储的主要用例:根据关键字返回正确的根实体。仓储实现作为一个模块,隐藏了您选择的持久性策略(参见:Parnas 1971)。