我对DDD相当陌生,并且阅读了一些有关该概念的文章,如果我缺乏一些知识,请原谅。我很好奇这个示例应该如何用聚合根建模。
基础是:有一个员工,一个会议和评论。每个员工都可以参加会议并发表评论。根据员工和会议跟踪注释。每个会议和员工都有唯一的标识符。
如果我想显示会议中的所有注释,无论是哪个雇员,我是否首先必须获取属于该会议的所有雇员,然后对注释进行排序以仅显示与会议ID匹配的注释?
会议不能成为我总的根源,因为当我需要一个员工列表时,我当然不希望通过会议来获得该列表。也许每个人都是一个聚合根,但是在员工外部,注释实际上没有任何意义。我正在寻找有关如何更好地处理这种情况的想法。
// Datebase tables
Meeting
Employee
Comment - Contain EmployeeId and MeetingId
public class Employee
{
public List<Comment> Comments { get; set; }
}
public class Meeting
{
public List<Employees> Employees { get; set; }
}
在此先感谢您的帮助。
最佳答案
员工和会议是您的汇总根,您必须为汇总根创建一个存储库。
注释可以是Meeting的属性。我认为从员工那里获取评论而不与会议相关是没有用的吗?如果您不知道评论的“上下文”(==会议),我认为评论没有任何意义?
这样,您的班级模型将与Chris Marisic提出的模型非常相似。
在这些类旁边,您可以具有以下存储库:
public class EmployeeRepository
{
public IList<Employee> GetAll() {}
}
public class MeetingRepository
{
public IList<Meeting> GetAll(){}
public IList<Meeting> GetMeetingsAttendedByEmployee( Employee emp ){}
}