Я думаю, что важно помнить, что DDD не должен применяться к всему , что вы делаете.Если у вас есть сложная проблемная область, достойная сложности, которую приносит DDD, это нормально.Однако также хорошо иметь другие области вашего программного обеспечения (по сути, другие границы), которые являются CRUD.На самом деле, CRUD является лучшим, где вы можете сойти с рук из-за простоты.Как сказал @DR, вы можете загружать данные, используя что-то более похожее на Transaction Script (я вижу что-то вроде IZipCodeValidator в вашем будущем) и передавать результаты туда, где они вам нужны, или вы можете подумать, что вашей службе приложений разрешеноиди и получи эти данные ZipCode, используя CRUD (IZipCodeRepository) и передав их полному доменному объекту, который имеет сложные правила для проверки.
Я считаю, что это пуристическое представление DDD, чтобы попытаться избежать передачиметоды в доменных объектах, которые делают вещи (например, DomainObject.ValidateAddress(address, IZipCodeRepository repo)
), вместо этого предпочитая передавать значения, полезные для проверки (например, DomainObject.ValidateAddress(address, IEnumerable<ZipCode> zipcodes)
).Я думаю, что любой может увидеть там потенциальные проблемы с производительностью, поэтому ваш пробег может отличаться.Я просто скажу сопротивляйся , если сможешь.