Я пытаюсь создать хорошую структуру решения для нового проекта DDD.Я создал «базовый» проект, в который я добавил Entities, ValueObjects и интерфейсы репозиториев, затем я добавил «Infrastructure» проект, который содержит реализацию предыдущего IRepository.
Теперь, так как мой db будет MongoDbМне нужно добавить атрибуты типа «[BsonDateTimeOptions]» в некоторых полях сущностей, для этого потребуется добавить ссылку на пакет драйвера MongoDb в основном проекте.
Поскольку основной проект не долженсодержит какую-либо ссылку на MongoDb, должна содержать только бизнес-логику, и она должна быть многократно использована в любом другом проекте (мобильный - Xamarin), какой должна быть лучшая практика в этой ситуации?
Что я могу подумать:
- сущности не будут содержать никаких ссылок на MongoDb
- . Создайте в инфраструктурных проектах модель для каждой сущности, то есть копию связанной сущности, но с атрибутами MongoDb.
- создать слой (в хранилище?), Который может использоватьмодель для запроса в БД, затем преобразовать его в сущность и, таким образом, вернуть сущность, скрывая в хранилище объект модели.
У этого подхода есть проблема, что у меня будет копия сущностимодель, которая имеет только атрибуты MongoDb, и при добавлении некоторых полей в сущность мне придется изменить и модель.Это правильный подход?
Все началось с этой структуры решения.