我在确定Aggregate Root如何跟踪子实体的变化时遇到了一些困难。
假设我有一个聚合:
Order
类是聚合根。如何跟踪OrderLineItem
到Order
类中每个{?}}所做的更改?
当我创建一个存储库(实现)时,例如一个OrderRepository
(因为只有聚合根可以使存储库正确?),我的OrderRepository
将如何跟踪每个OrderLineItem
的更改?
示例:
你们怎么处理这个?
答案 0 :(得分:6)
现在Order类是聚合根,我将如何跟踪 通过Order类对每个OrderLineItem进行的更改?
对Order
聚合的所有更改(包括OrderLineItem
)都应通过聚合根目录。这样,聚合可以保持其完整性。跟踪更改,这取决于您的持久性实现。如果使用诸如EF或NHibernate之类的ORM,则ORM将负责跟踪更改。如果使用事件源,则会将更改显式跟踪为一系列事件,通常由OOP实现中的聚合维护。如果直接使用SQL,您还可以避免跟踪更改并在每次提交时更新整个聚合。
当我创建一个存储库(实现)时,说OrderRepository是因为 只有聚合根可以使存储库正确吗?
是,每个聚合的存储库。