2010-09-07 3 views
3

Хотя я уже давно занимаюсь разработкой домена (DDD), я относительно новичок в Entity Framework (EF), и один из вопросов, который пришел мне на ум при использовании конструктора Entity Framework в Visual Studio как следует представлять/моделировать агрегаты в EF.Как моделировать агрегаты с помощью Entity Framework?

В соответствии с передовой практикой DDD сущности должны ссылаться только на другие объекты (или объекты ценности) в пределах одного и того же агрегата, а ссылки на другие объекты ограничены корневыми объектами агрегатов (совокупные корни). Однако я не вижу ни одного из этих понятий, присутствующих в EF (т. Е. Все Entities обрабатываются одинаково, и, следовательно, на ссылки между Entities не применяются ограничения).

Таким образом, я спрашиваю: Я пропустил что-то в EF, или он полностью агностик относительно агрегатов, совокупных корней и ссылок между сущностями? Если это так, как вы моделируете агрегаты при использовании Entity Framework?

ответ

2

Я думаю, что DDD - это другой уровень абстракции, поэтому мой ответ не является EF по умолчанию, не следует этим практикам. Это зависит от вас, чтобы моделировать сущности и хранилища, следуя DDD. Вы будете использовать репозитории для создания своего заполнителя с загруженными связанными объектами, связанными только с текущим корнем агрегирования, и вы будете использовать службы домена для работы с разными репозиториями.

+0

Вот что я подозревал, спасибо за подтверждение! – angelwithagun

1

Я просто хотел, чтобы исправить небольшую (но очень важная деталь):

Вы утверждаете, что «Сущности должны ссылаться только на другие организации (или Value Objects) в пределах одной и той же агрегата».

Конечно, для этого могут быть некоторые аргументы, но он более строг, чем то, что хотя бы один ресурс в DDD рекомендует: «Объектам внутри агрегата должно быть разрешено удерживать ссылки на корни других агрегатов». («Быстрое создание домена» от Avram & Marinescu).

С наилучшими пожеланиями, Саймон

+0

Вы абсолютно правы, извините, что не понимаете. – angelwithagun

+0

Дело в том, как вы гарантируете, что Entity Framework не будет обновлять ссылки на другие Агрегатные Корни (до них)? EF никогда не должен касаться объектов из 2 агрегатов в одной транзакции. – SuperJMN

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