Итак, я решил изучить DDD, поскольку он, по-видимому, решает некоторые архитектурные проблемы, с которыми я столкнулся. В то время как есть много видео и примеры блог, я не встречал один, который поможет мне решить следующий сценарий:DDD: руководство по обновлению нескольких свойств объектов
Пусть я сущность
public class EventOrganizer : IEntity
{
public Guid Id { get; }
public string Name { get; }
public PhoneNumber PrimaryPhone { get; }
public PhoneNumber AlternatePhone { get; private set; }
public Email Email { get; private set; }
public EventOrganizer(string name, PhoneNumber primaryPhoneNr)
{
#region validations
if (primaryPhoneNr == null) throw new ArgumentNullException(nameof(primaryPhoneNr));
//validates minimum length, nullity and special characters
Validator.AsPersonName(name);
#endregion
Id = new Guid();
Name = name;
PrimaryPhone = primaryPhoneNr;
}
}
Моей проблема: предположит, что это будет конвертирована и поданный на просмотр MVC, и пользователь хочет обновить AlternatePhone, электронную почту и множество других свойств, которые имеют смысл существовать внутри этого объекта для данного ограниченного контекста (не показано для краткости).
Я понимаю, что правильный руководство должно иметь метод для каждой операции, но (И я ЗНАЮ ЕГО КИНДА АНТИ-ПАТТЕРНЫ), я не могу помочь, но если это не приведет к запуску нескольких вызовов обновления в базе данных.
Как это обрабатывается? где-то вниз по линии, будет ли что-то, что сопоставляет мой EventOrganizer с чем-то - скажем DbEventOrganizer и собирает все изменения, внесенные в объект домена, и применяют их в один проход?
Спасибо. в то время как мне нужен более глубокий анализ моего домена, это то, что мне нужно; я действительно нуждаюсь в операции ChangeContactinformation, ее просто потому, что это был мой первый проект DDD, который я повесил на мой взгляд на CRUD. Огромное спасибо ! – sergio
@ Серхио Я рад, что смог помочь! Чтобы быть ясным, «ContactInformation» должен быть объект значения. Не передавайте отдельные VO, такие как PrimaryPhone, Email и т. Д. В качестве отдельных аргументов в метод 'ChangeContactInformation'. – plalx