我有以下DDD方案中,分为以下的聚集体:DDD:一到许多在其它聚集用户聚合根和几乎所有实体之间的关系
用户,
朋友(用户协会),
文件(用户上传),
画廊(文件组),
消息(用户通信),
组(用户可以创建和其他的会员可以加入),
GroupMessages(邮件发送到的所有成员组),
群组论坛(群组成员可以讨论各种主题)
这就是它令人困惑的地方。用户与GroupForums的所有内容相关联。通过用户存储库访问其他集合似乎不合逻辑,尽管从级联的角度来看,如果我删除了用户,技术上与用户关联的记录也应该消失。
看起来好像我不应该将这里存在的所有一对多关联添加到用户实体,因为从数据库中提取水合物似乎很荒谬,特别是如果我尝试拉取与该关联的每条记录用户。对于组织集合和存储库以及处理给定实体的许多一对多关系的正确方法,建议采用什么策略?
对于用户聚合示例,我使用了Entity Framework POCO实体生成实用程序,并创建了User对象,并为它与其具有一对多关系的所有实体添加了IList <>属性。顺便说一句,我正在使用微软作为一个微型的orm。我是否应该删除IList <>属性条目,因为我宁愿从它们各自的存储库访问它们?在这种情况下,我应该从User实体中删除IList(一对多)关联,并且有权访问组通过GroupRepository而不是User存储库? – user1790300 2013-05-05 20:17:15
我真的不知道EF,所以我不知道如何正确操作文件。对于这个问题,我不知道任何ORM :) --- w.r.t.用户 - >组它将取决于你的域名,但我猜测用户分组是多对多的,所以我会从用户中删除该列表。可能有用户所属的组ID的列表或包含ID和组名称的某个值对象(UserGroup)。 – 2013-05-06 04:47:08
让我们从纯粹的实体和聚合视角来看待它,组织用户与朋友,文件,图库,消息,组,GroupMessages,GroupForums实体之间的关系的推荐方法是什么?对我来说,似乎应该在用户实体中没有IList条目,而是每个其他实体都应该包含用户实体的属性。 – user1790300 2013-05-06 12:42:32