DDD中Repository Update 方法对聚合整体更新的疑问

16-07-04 zhengzhiqiang
              

我有一个疑问是关于DDD Repository设计的

我的设计是基于一个DDD Repository概念,既 Repository是属于AggregateRoot,仅能以AggregateRoot为参数的。

Repository的Delete和Update方法是比较容易的实现的,既整体添加Aggregate 包括 Aggregate内的Entity,删除也是类似,对整个Aggregate操作。

但是Update方法比较复杂了。因为我的DB用的是Sql Server或者MySql并不是纯粹的Key-Value方式存储Aggregate。

我还是举订单的例子吧。

我们在Update OrderLine Aggregate 可能包括

修改OrderLine属性,或者删除OrderLine内的OrderItem集合的一个项,或者增加OrderItem集合中的一个项,或者修改OrderItem的属性。

这些操作在执行Repository Update方法的时候需要整体保存到关系型数据库中。

所以这个感觉这个Update的问题很难处理。

我们总不能让Entity也支持Repository。这样破坏了Repository对聚合Store的整体操作的概念。

So 请指教,谢谢。

              

1
banq
2016-07-05 16:14

这些属于脏活累活,要么自己开发框架工具搞定,要么使用Hibernate/JPA搞定。