Я решил применить на практике то, что недавно узнал о DDD, но я запутался в том, что делать в моем сценарии. Я очень новичок в этой школе мысли, так что извините за мое невежество
Примите во внимание следующее:
- A
School
имеет 30 свойств, включая временные ряды учителей, которые работали там и когдаи временной ряд принципалов. Он также имеет временной ряд Classroom
- A
Classroom
имеет еще 20 свойств. Кроме того, временной ряд цвета классной комнаты на протяжении лет, стиль расположения мест и т. Д. Он также имеет StudentAttendance
История записей (временной ряд 30 лет) - A
StudentAttendance
запись имеет Year
и NumberOfStudents
(ValueObject)
Как вы определяете эту модель? Первоначально я думал, что Школа - это АР, так как классные комнаты не могут существовать без школы, а StudentAttendance не может существовать без классной комнаты.
Мой вопрос: чтобы изменить случайную StudentAttendance
запись NumberOfStudents
(скажем, в SchoolId 10, в классе 1 в 1993 году было 25 учеников вместо 30), нужно ли мне создать действительный School
первый? Это означало бы, что мне нужно получить огромное количество информации для заполнения всех других свойств, которые не нужны для моих действий. Мне просто нужен школьный идентификатор, классный номер, год и новый номер.
В старом мире CRUD я бы просто определил методUpdateStudentAttenance(int schoolId, int classroomId, int year, int newNumberOfStudents)
Примечание. Согласно DDD, я создал классы с конструкторами, которые заполняют все свойства, чтобы создать и сохранить их в допустимом состоянии (например, School
должен иметь Name
, Area
, ConstructionYear
и т. д.), поэтому я не могу просто позвонить new School(id: 5)