Я стараюсь поддерживать свой уровень домена как можно более «чистым», не тратя время на постоянство или другие проблемы с инфраструктурой. Однако бывают случаи, когда моему доменному уровню необходимо использовать службы СУБД или другой внешней зависимости, и я не знаю, как с этим справиться.
Например, каждый объект домена в моем приложении реализует интерфейс IValidatable, который вызывается клиентами для получения списка нарушенных правил, которые препятствуют сохранению объекта. В некоторых случаях вышеупомянутая процедура проверки включает вызов класса DAO для проверки существования конкретной записи. Мы не используем ORM; вместо этого мы используем постоянный слой, построенный с использованием шаблона объекта доступа к данным. Должен ли я просто создать класс service / wrapper для доступа к этой базе данных и сделать так, чтобы мой объект домена сотрудничал с ним? Допустимо ли добавлять этот уровень косвенности или я все еще загрязняю свой объект домена?