Доменно-управляемый дизайн, .NET и Entity Framework

Я новичок в дизайне, управляемом доменом, но хочу изучить его и использовать для нового приложения. Я буду использовать Entity Framework для доступа к данным.

Основная схема на данный момент:

ASP.NET MVC и другие клиенты (мобильные устройства и т. Д.)
|
Webservices
|
Модель предметной области (сервисы, репозитории, агрегаты, сущности и объекты стоимости)
|
Уровень доступа к данным (Entity Framework)
|
Хранение данных (SQL Server)

Каков наилучший способ передачи данных между уровнем доступа к данным и моделью предметной области? Я думаю, что сущности в доменной модели являются объектами POCO и что они должны быть сопоставлены с объектами Entity Framework. Это хорошее решение?

Если так:
Как и где должно происходить такое отображение? (Уровень модели домена или Уровень доступа к данным)
Где и как я должен запрашивать Entity Framework (т.е. возвращать список на основе поиска)?

4 ответа

Решение

АНДРЕЙ ЕМЕЛЯНОВ защитил кандидатскую диссертацию на эту тему:

http://gupea.ub.gu.se/dspace/bitstream/2077/10462/1/gupea_2077_10462_1.pdf

Это станет намного проще с выпуском EF 4, который поддерживает объекты POCO.

В то же время вы можете попробовать использовать automapper для сопоставления между доменом и объектами EF, см. http://www.lostechies.com/blogs/jimmy_bogard/archive/2009/01/22/automapper-the-object-object-mapper.aspx

Я думаю, что сущности в доменной модели являются объектами POCO и что они должны быть сопоставлены с объектами Entity Framework. Это хорошее решение?

Я думаю, что это.

Это то, что мы сделали довольно успешно, хотя в моем случае в мире Java. Наши доменные классы содержат большую часть бизнес-логики. Каждый имеет ссылку на тонкий объект сущности данных и делегирует получение и установку постоянных свойств сущности данных.

Я бы пошел на Enterprise Core Objects (ECO) от способного объекта

Он делает все, что вы хотели бы от структуры DDD

Проект архитектуры S#arp является отличной отправной точкой для руководства по применению DDD. Он основан на NHibernate, но используемые принципы должны в равной степени относиться к EF...