Я чувствую, что нет ничего плохого в том, чтобы выставлять доменные модели в репозитории, а также на другие слои луковой архитектуры.В противном случае было бы неправильно (открыть другие уровни для домена).
Более того - если ваша модель домена хорошо инкапсулирована, и классы защищают себя от создания (или перевода) в любом случае неправильного состояния, блокируя доступЭти классы кажутся бессмысленными, поскольку ничего не может случиться с тем, что они создаются в любом месте вашего приложения, если эта часть приложения имеет достаточно информации для создания этих объектов.
Архитектура лука допускает зависимость от внутренней части лука (то есть по направлению к домену).
Пожалуйста, обратитесь к этому изображению: https://www.codeguru.com/imagesvr_ce/2236/Onion1.png
или к полной статье: https://www.codeguru.com/csharp/csharp/cs_misc/designtechniques/understanding-onion-architecture.html
Экспонирование домена для внешних слоев луковой архитектуры дает вам некоторые возможности, такие как реализацияшаблон CQRS, по-прежнему поддерживающий запросы, команды внутри домена - и, следовательно, поддерживающий проверки в одном месте и т. д.
РЕДАКТИРОВАТЬ:
Еще одна вещь, которую я часто использую, это прикладной уровень, которыйявляется организатором всех зависимостей и держателем общедоступного API.
Приложение содержит интерфейсы репозиториев, инфраструктур и других внешних зависимостей.Эти интерфейсы реализованы на разных уровнях и в целом внедряются на уровне персистентности (UI) с помощью IoC.
Это дает вам гибкость для замены реализаций с внешних уровней, при этом прикладной уровень не затрагивается вообще, так кактолько ретранслирует абстракции.
Пример:
Контроллер - принимает DTO и сопоставляет его с Query или Command
Приложение - обрабатывает Query или Command путем вызоваабстракции от внешних уровней и реальные реализации домена
домен - имеет богатые модели, которые знают, как выполнять бизнес-действия
хранилища - просто реализации доступа к данным
Взгляните наэтот GitHub: https://github.com/matthewrenze/clean-architecture-demo Это также связано с отличным видео Pluralsight, если вы заинтересованы.