Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oop 域驱动的设计子实体更改跟踪_Oop_Domain Driven Design_Repository Pattern_Domain Model_Aggregateroot - Fatal编程技术网

Oop 域驱动的设计子实体更改跟踪

Oop 域驱动的设计子实体更改跟踪,oop,domain-driven-design,repository-pattern,domain-model,aggregateroot,Oop,Domain Driven Design,Repository Pattern,Domain Model,Aggregateroot,我很难弄清楚聚合根如何跟踪子实体上的更改 假设我有一个集合: 订单(根) 订单行项目 其中,Order类是聚合根。如何通过Order类跟踪对每个OrderLineItem所做的更改 当我创建一个存储库(实现)时,例如OrderRepository(因为只有聚合根才能拥有正确的存储库?),我的OrderRepository将如何跟踪每个OrderLineItem的更改 例如: 新添加但未提交给DB 已编辑但已提交给DB 已编辑但未提交到数据库 你们是怎么处理的 现在Order类是聚合根,我

我很难弄清楚聚合根如何跟踪子实体上的更改

假设我有一个集合:

  • 订单(根)
  • 订单行项目
其中,
Order
类是聚合根。如何通过
Order
类跟踪对每个
OrderLineItem
所做的更改

当我创建一个存储库(实现)时,例如
OrderRepository
(因为只有聚合根才能拥有正确的存储库?),我的
OrderRepository
将如何跟踪每个
OrderLineItem
的更改

例如:

  • 新添加但未提交给DB
  • 已编辑但已提交给DB
  • 已编辑但未提交到数据库
你们是怎么处理的

现在Order类是聚合根,我如何跟踪 是否通过Order类对每个OrderLineItem进行了更改

订单
聚合的所有更改,包括
OrderLineItem
,都应通过聚合根目录进行。这样,聚合可以保持其完整性。至于跟踪更改,这取决于您的持久性实现。如果使用诸如EF或NHibernate之类的ORM,则ORM将负责跟踪更改。如果使用事件源,那么更改将作为事件序列显式跟踪,通常由OOP实现中的聚合维护。如果直接使用SQL,还可以避免跟踪更改,并在每次提交时更新整个聚合

当我创建一个存储库(实现)时,说OrderRepository是因为 只有聚合根目录才能拥有存储库权限


是,每个聚合的存储库。

hi。。欧拉费。。谢谢虽然我的域模型不同于我的EF实体。。我在数据访问层做一些映射。。将我的域中的类映射到我的EF实体..示例:SalesTransaction(域模型中的类),SpecialTransaction(域模型中的类),但在DAL中它只是一个事务(EF实体)。。我就是这样做的,所以我无法跟踪我的域实体,因为它不知道是谁在实现存储库接口。。那么我如何跟踪这些变化呢??由于上层使用域实体。为什么不直接将EF映射到域对象?我在我的EF中使用模型1我不使用代码1。。。我创建了将域对象映射到ef实体的类。如果处理两个类层次结构,跟踪更改的另一种方法是在域对象和相应的持久性对象之间进行比较。我相信EF在幕后也能做类似的事情。