У меня есть следующий сценарий в DDD.
public class Document
{
public int Id {get;set;}
public string DocumentCode {get;set;}
public int BuyerId {get;set;}
}
public class Buyer
{
public int Id {get;set;}
public string Name {get;set;}
}
И теперь я хочу найти все документы, содержащие покупателя, с именем "Джон".
Поскольку покупатель - это другой агрегатЯ думаю об этих сценариях
Создать новый агрегат
public class DocumentSearch
{
public int Id {get;set;}
public string DocumentCode {get;set;}
public int BuyerId {get;set;}
public string Name {get;set;}
}
«Проблема» в том, что этот агрегат должен прослушивать любые изменения Покупателя и применять изменениялокально.
Сохраняйте все как есть.
И на уровне БД создайте представление, которое будет действовать как новый агрегат.Проблема здесь в том, что он нарушает все принципы DDD, и приложение на самом деле не остается невежественным
Выполните поиск и присоединитесь на уровне приложения
По сути, выполните поиск по Документу, выполнитепоиск на покупателя и присоединиться к нему на уровне приложения.Я полагаю, что для этого потребуется больше времени и силы, поскольку оба набора изначально будут больше, чем они должны быть в объединенном поиске?
Каким будет путь, чтобы следовать принципам DDD?CQRS - окончательное решение, но я ищу переходное решение на пути к CQRS