Здравствуйте, dmitry_npi, Вы писали:
_>Вопрос — как совместить хорошую производительность и хороший дизайн. С точки зрения дизайна, мне кажется, что данный класс должен иметь у себя такой метод, там ему самое место. Но с другой стороны, если каждый экземпляр полезет в базу, будут тормоза. Как быть? Есть какой-то типовой прием?
Самый стандартный приём когда нужно отвязать доменную модель от инфраструктуры это связка из Unit Of Work и Detached Interface. Detached Interface заставляет интерфейс UnitOfWork объявляеть в доменной модели, а реализацию в сервисном слое, таким образом исключается циклическая зависимость между пакетами, и инициатором обращения к инфраструктуре как и положено является сервисный слой, так как реализация UnitOfWork помещается в него. В метод сущности для которого возможна понадобиться дополнительная информация передаешь инстанс UnitOfWork и если сущности что-то понадобиться она запрашивает это у UnitOfWork но ей не обязательно ничего знать об оптимизации, так и о том что она не единственная кто поработает с этим экземпляром UnitOfWork.