1

Что касается сохранения DomainModel с использованием EntityFramework. Я хотел бы подтвердить следующий подход с экспертами в этой области:Разработка домена с использованием структуры сущностей Первая модель

Рычаги OnModelCreating на карту или игнорировать навигационные свойства , которые не нужны. К сожалению, все это относится к Code-First.

VS

Treat Модель Первый ПОКО, как DTO & с использованием слоя антикоррупционную

У нас есть огромные инвестиции в базе данных разработана с использованием модели первых, в для того, чтобы использовать DDD, который оставляет только один путь для нас - оставить POCO классы, созданные только дизайнером & Доменные классы отдельно. Когда когда-либо понадобилось, нужно вручную сопоставить или использовать AutoMapper. Я прав?

Во-вторых, что было бы лучшим местом для этого картографирования, слоя с антикоррупцией?

EDIT: Мы> 250 таблиц в схеме, проходя через код-первых, я чувствую, как потерять способность осознания того, что дизайнер провайдеров, а также моделировать первый у меня есть полное право раз .SQL генерируется. Однако вначале я должен жить во власти миграции кода, чтобы генерировать/обновлять таблицы для меня.

+0

Несмотря на то, что вы можете иметь классы POCO и домена, разделенные с использованием Automapper для _link_, оба обычно не используют POCO. У меня мой домен чистый, без каких-либо ссылок на EF, поэтому в моем домене нет OnModelCreating и DataAnnotations. EF внутри Infra/Data layer, ссылаясь на мой домен и используя мои классы домена для генерации базы данных. В моем прикладном уровне у меня есть более простые модели, которые доступны для приложения, представляющие классы домена, которые сопоставляются с Automapper. Пожалуйста, прочитайте это [сообщение] (http://stackoverflow.com/questions/909264/ddd-anti-corruption-layer-how-to), я нашел его очень интересным. – Alisson

+0

Существует подход «объект состояния поддержки», хотя я не большой поклонник этого и не рекомендую его для нового приложения: https://vaughnvernon.co/?p=879 – guillaume31

ответ

1

Я думаю, что базовые/дизайнерские подходы к работе не работают с DDD. причина в том, что дизайн класса/модели является лишь частью вашего дизайна DDD. Другая часть - это методы, которые предоставляют эти классы/модели. AFAIK вам будет трудно реализовать тех, у кого есть первый подход дизайнера.

Также, если публичный конструктор по умолчанию является обычным компромиссом, люди делают, чтобы иметь возможность отображать свою модель.

Сообщалось, что есть инструменты, чтобы вы могли создавать объекты POCO на основе вашей базы данных. поэтому ваши усилия не будут татуированы, даже если вы хотите переключиться на подход POCO. Просто будущие обновления могут быть сделаны в вашем POCO в первую очередь.

я думаю, что вы должны спросить себя, если ограничения вы накладывая на себя не удерживает вас от решения, которое вы хотите (не используя рамки сущности и, не имея открытый конструктор)

Если вы храните ваши росо отделим от вашей модели, тогда да, уровень защиты от коррупции будет там, где они будут жить. В этом случае они просто DTO.

Смежные вопросы