Orm 使用Factory进行映射和重建的域模型快照

Orm 使用Factory进行映射和重建的域模型快照,orm,domain-driven-design,memento,Orm,Domain Driven Design,Memento,我在书中读到,如果你想完全封装你的域模型,你可以将它的属性设置为私有,并使用Memento模式来读取它们。还有一个例子是,存储库获取域模型的快照,然后映射到数据库模型并将其更改保存到数据库。它还从数据库中检索数据库模型,将其映射到快照,然后使用工厂模式从快照中重建域模型并使用它 当您只需将数据库模型映射到域模型,而不使用工厂或快照时,我对这里要做多少工作感到有点困惑。这不是容易多了吗 如果我们要学习这本书,那么将域模型快照从服务层返回到表示层,然后将其映射到视图模型是正确的方法吗?或者在表示层中

我在书中读到,如果你想完全封装你的域模型,你可以将它的属性设置为私有,并使用Memento模式来读取它们。还有一个例子是,存储库获取域模型的快照,然后映射到数据库模型并将其更改保存到数据库。它还从数据库中检索数据库模型,将其映射到快照,然后使用工厂模式从快照中重建域模型并使用它

  • 当您只需将数据库模型映射到域模型,而不使用工厂或快照时,我对这里要做多少工作感到有点困惑。这不是容易多了吗
  • 如果我们要学习这本书,那么将域模型快照从服务层返回到表示层,然后将其映射到视图模型是正确的方法吗?或者在表示层中创建快照并将其传递到服务层,使用工厂模式在那里重新构建快照,然后将域模型传递到存储库,在存储库中它将再次获取快照以映射到数据库模型并保存到数据库

  • 当您需要使用如此复杂的映射体系结构时,您能给出一些示例吗

  • 当你可以做得更简单的时候,你真的觉得你在写复杂的代码

    更新

    如果更容易理解我的问题,我可以给出代码示例。;)

  • 存储库的工作只是从持久存储中保存和重新水化域实体。除此之外的任何设计模式都只是技术细节,通常是解决ORM缺陷的一种方法——但它本身并不是存储库(即DDD的基本存储手段)的一部分

    我想那本书中的Memento模式是用来解决“ORM/封装冲突”的,也就是说,ORM需要对实体的所有字段进行写访问才能对其进行重新水化,这迫使您公开它们并破坏封装

  • 不,Memento或Snapshot仅用于持久性目的。服务(或应用程序)层从真实实体映射,或者如果您在CQR下,则使用预计算的读取特定模型