【发布时间】:2019-10-09 18:18:00
【问题描述】:
我决定将我最近学到的有关 DDD 的知识付诸实践,但我对在我的场景中要做什么感到困惑。我对这个学派很陌生,所以请原谅我的无知
考虑以下几点:
-
School有 30 个属性,包括在那里工作的教师的时间序列和时间,以及校长的时间序列。它还有一个时间序列Classroom -
Classroom有另外 20 个属性。还有历年教室颜色的时间序列、座位布置方式等。还有StudentAttendance记录历史(30年时间序列) -
StudentAttendance记录具有Year和NumberOfStudents(ValueObject)
你如何定义这个模型?
我最初的想法是,学校就是 AR,因为没有学校就不可能有教室,没有教室就不可能有 StudentAttendance。
我的问题是,为了更改随机的StudentAttendance 记录的NumberOfStudents(假设 1993 年的 SchoolId 10, Classroom 1 有 25 名学生而不是 30 名),我是否需要创建一个 valid School 第一个?这意味着我需要获取大量信息来填充我的操作不需要的所有其他属性。
我基本上只需要 schoolId、classroomId、年份和新号码。
在旧的 CRUD 世界中,我只会定义一个方法 UpdateStudentAttenance(int schoolId, int classroomId, int year, int newNumberOfStudents)
注意:根据 DDD,我创建了具有填充所有属性的构造函数的类,以创建并保持它们处于有效状态(例如 School 必须 Name、Area、ConstructionYear 等)所以我不能只打电话给new School(id: 5)
【问题讨论】: