У меня есть две сущности: Пользователь и Курс. Пользователь может пройти несколько курсов, что делает отношения один ко многим. Но многие студенты могут пройти один курс, так что это делает их отношениями со многими.
Теперь мне нужно зарегистрировать курс для пользователя. Мой пользовательский объект имеет:
public void AddCourse(Course course)
{
if (CoursesAlreadyAdded(course))
{
AddBrokenRule(new BrokenRule() { PropertyName = course.ClassCode, Message = String.Format("Course with classCode = {0} already added", course.ClassCode) });
return;
}
UserCourses.Add(new UserCourse() { UserId = this.UserId, CourseId = course.CourseId, Course= course, User = this});
}
Классы создаются через Linq to SQL. Linq to sql не способен выполнять многие отношения, поэтому я должен справиться с этим сам.
Теперь вопрос в том, как я отправлю информацию в базу данных. Должен ли UserRepository.Save (пользователь) отвечать за сохранение курсов.
Этот тип означает, что Пользователь является совокупным корнем сущности Курса, но на самом деле это не так, поскольку я могу получить доступ к Курсу многими различными способами, и я не зависим от объекта Пользователь, чтобы предоставить мне Курс.
Даже если у меня есть служба CourseRegistrationService (которая у меня есть), я должен вызвать хранилище, чтобы сохранить изменения. Какой репозиторий отвечает за сохранение изменений в отношении пользователя и курса. Может быть, UserCourseRepository !!
Кроме того, просто поместив список под объектом «Пользователь», пользователь становится совокупным корнем или это неверно. Если да, то как бы вы разработали приложение, используя OR MAPPERS, который автоматически генерирует список и отношения один ко многим.