Недавно появилась интересная статья Мартина Фаулера, в которой может быть рассмотрен вопрос о том, что вам не нужны некоторые вещи при поиске, и который называется «Разделение ответственности при выполнении командных запросов».Основная концепция заключается в том, что вы можете использовать «модель» для «запроса» (чтение), отличную от «команды» (сохранение).
http://martinfowler.com/bliki/CQRS.html
То, что вы выполняете DDD, не означает, что все должно содержаться в соответствующих объектах домена.Разработка вашего домена - это то же самое, что и разработка сервисов, мероприятий и т. Д. Я хочу сказать, что нужно сделать так, чтобы ваш домен получился более естественным, сосредоточив внимание на том, что требуется «домену», и на каких решениях можно удовлетворить эти требования.В DDD нет строгой методологии, это скорее выбор в перспективе, чем формальный шаблон проектирования.Таким образом, наличие объектов истории в качестве корней сущностей не обязательно является плохим, если они действительно используются только для сохранения.Ваши службы, связанные с «командами», составляют правильный логический поток для сохранения животных и историй.
Я также хотел бы отметить, что такие вещи, как Animal.UpdateStatus(newStatus)
, довольно активная запись, которую вы, казалось, хотели избежать.