Domain driven design 更新后是否需要将实体放回存储库?

Domain driven design 更新后是否需要将实体放回存储库?,domain-driven-design,Domain Driven Design,我再次阅读了埃文斯书中关于存储库的章节,但我还不清楚以下问题: 当我对从存储库获取的实体进行修改时,是否需要将该实体放回存储库?存储库是否了解它重组的实体?很明显,如果我没有修改从存储库中检索到的实体,就没有必要将该实体添加回存储库 谢谢存储库通常包含一个包含保存、更新和删除等方法的界面。因此,是的,客户机域层通常会通过调用存储库上的那些方法将实体放回存储库中 如果您的域代码在给定路径中知道不会进行任何更改,那么它肯定不需要再次调用update/save方法。但是,如果您不确定,调用这些方法并让

我再次阅读了埃文斯书中关于存储库的章节,但我还不清楚以下问题:

当我对从存储库获取的实体进行修改时,是否需要将该实体放回存储库?存储库是否了解它重组的实体?很明显,如果我没有修改从存储库中检索到的实体,就没有必要将该实体添加回存储库


谢谢

存储库通常包含一个包含保存、更新和删除等方法的界面。因此,是的,客户机域层通常会通过调用存储库上的那些方法将实体放回存储库中

如果您的域代码在给定路径中知道不会进行任何更改,那么它肯定不需要再次调用update/save方法。但是,如果您不确定,调用这些方法并让存储库决定如何或是否更新基础数据存储可能是有意义的

有不同的方法来实现存储库及其与底层数据访问层和数据存储的交互。理论上,你可以用任何你认为最有效的方法来实现这一点。例如,存储库可以查询数据存储,执行比较并查找更改。然而,在实践中,许多实现使用实体上的数据跟踪,例如IsDirty或isModified,以帮助存储库了解实体是否被域层更改以及是否需要更新


希望这有助于提供一些指导。

存储库通常包含一个包含保存、更新和删除等方法的界面。因此,是的,客户机域层通常会通过调用存储库上的那些方法将实体放回存储库中

如果您的域代码在给定路径中知道不会进行任何更改,那么它肯定不需要再次调用update/save方法。但是,如果您不确定,调用这些方法并让存储库决定如何或是否更新基础数据存储可能是有意义的

有不同的方法来实现存储库及其与底层数据访问层和数据存储的交互。理论上,你可以用任何你认为最有效的方法来实现这一点。例如,存储库可以查询数据存储,执行比较并查找更改。然而,在实践中,许多实现使用实体上的数据跟踪,例如IsDirty或isModified,以帮助存储库了解实体是否被域层更改以及是否需要更新


希望这有助于提供一些指导。

您的存储库中肯定有一个Save方法,但是为了更好地分离关注点,我发现在一个工作单元中处理更改跟踪和持久性更好。大多数ORM都允许您一次性保存作为业务事务一部分的所有修改实体,或者临时保存单个实体


您当然可以在存储库中使用Save方法,但是为了更好地分离关注点,我发现在一个工作单元中处理更改跟踪和持久性更好。大多数ORM都允许您一次性保存作为业务事务一部分的所有修改实体,或者临时保存单个实体


我知道它已经有将近一年的历史了,但我想添加一段来自Eric Evans的《域驱动设计:解决软件核心的复杂性:存储库充当内存中的聚合集合,从而封装存储机制》一书的释义/片段。[/end reporthrase]内存中的集合有两种工作方式:它们给出值,您必须使用您对值所做的任何更改来更新集合,或者它们给出引用,并且已经知道您所做的更改。不过,你还是要告诉收藏品,它需要以某种方式保持下去。我知道它已经有将近一年的历史了,但我想添加Eric Evans的《域驱动设计:解决软件核心的复杂性》一书中的一段转述/片段:存储库充当内存中的聚合集合,从而封装存储机制。[/end reporthrase]内存中的集合有两种工作方式:它们给出值,您必须使用您对值所做的任何更改来更新集合,或者它们给出引用,并且已经知道您所做的更改。不过,您仍然需要告诉集合它需要以某种方式保持。