请教一个DDD实践的问题

大家好:

假设存在一个领域实体School,它是一个聚合跟,除了基本信息外,它还包含班级列表,班级里又有学生,结构大概如下:

{
"SchoolName": "大连工业大学",
"Address": "大连",
"Class": [{
"ClassName": "计算机031",
"Students": ["王五", "李四"]
},
{
"ClassName": "计算机032",
"Students": ["王五六", "李四一"]
}
]
}

假设现在有一个需求,要在前段UI上展示学校列表,那我在领域模型里应该如何读取School实体呢,是不是从Repository里面获得N个School实体,每个实体里都完整的,包括班级和学生? 这样的话会造成不必要的数据库读取操作。

如果我只读取School的基本信息,而不读取里面的班级和学生的话,是不是要定义另一个实体LightSchool,这样的话岂不是一个概念对应了两个领域模型

或者是我定义一个SchoolDto,里面只包含School的基本信息,从Repository里面直接构造Dto?

又或者是我专门在写一个数据库操作层,直接得到Dto,而Repository专门负责得到完整得领域模型?

想请教各位在DDD实践中是如何处理这样的问题的,谢谢!

回答

建议试试 CQRS,业务查询这类没有副作用的操作可以不用在乎 DDD 的限制,怎么方便怎么来就好了。

eShopOnContainer 里就是直接 sql 语句查询的:https://github.com/dotnet-architecture/eShopOnContainers/blob/dev/src/Services/Ordering/Ordering.API/Application/Queries/OrderQueries.cs

以上是请教一个DDD实践的问题的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>