DDD中聚合根与聚合的概念
藍色回憶 2016-03-28 05:42:20 最近看到DDD这个话题,感觉很有意思,越深入研究越是疑惑,DDD是为了聚焦业务而设计的,但是我在做的过程中发现在Repositories持久化层有聚合根的概念,我看了很多文章,里面讲的大多都是一样的,聚合根存在的目的是为了不让聚合外的实体直接访问,需要通过聚合根来访问这个实体,但是我有几点不懂。
聚合根在我觉得很像是一个表的主键,网上都说到查找数据什么的都是通过聚合根来查的,但是在我遇到的项目中,都是通过一系列搜索条件来查找一个或多个实体的,我没觉得聚合根有什么优势啊?我设计的数据表中都有Guid类型的键,但是名字起的不是一样的,这样一来,我在使用的时候还需要将Guid类型的键更改名字,感觉好麻烦啊。另外是不是数据库的每一个表都对应一个聚合根?如果在entity中不继承领域模型的聚合根的话,没办法执行crud操作,但是如果实现了就要求数据库必须有这个属性,这个都怎么解决呀?
另外在什么时候需要用到仓储?Repositories层实现了domain的IRepositories接口,与数据库打交道,然后把数据取出来给应用层,为什么我觉得不用聚合根,不用这个仓储也挺简单的?在IRepositoryContext中定义了一个仓储上下文的Id,这个Id有什么作用,应该是区分是哪个数据源的吧,但是有没有地方会用到这个,能给举个例子吗?