Доменно-управляемый дизайн и Entity Framework 4.1 (сначала код) - PullRequest
7 голосов
/ 08 ноября 2011

В настоящее время я изучаю подход к разработке, ориентированный на домен, и использую в качестве руководства книгу .NET Domain Driven Design с C # Тимом Маккарти.

Книга действительно полезна, но я немного застрял, когда дело доходит до использования структуры сущностей, в частности, подхода «сначала код», доступного в 4.1.

Основываясь на примере, приведенном в книге, подход многоуровневой архитектуры должен означать, что уровень инфраструктуры не может видеть модель / домен один.

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

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

Большое спасибо:)

Адам

1 Ответ

8 голосов
/ 08 ноября 2011

Что ж, большинство современных ORM, таких как EF 4.1 и Nhibernate (свободный аддон Nhibenrate), могут описывать отображения из POCO в контекст Db через классы отображения.Эти классы отображения лучше всего размещать в инфраструктурном проекте базы данных, возможно, вместе с классами, специфичными для сеанса ORM.

Тогда ваши классы домена POCO должны быть помещены в проект домена, который не должен иметь ссылок на другие компоненты илипроекты.НО инфраструктурный проект базы данных должен ссылаться на домен, чтобы ваши классы отображения могли определить, как POCO должны загружаться из постоянного состояния.

Используйте много внедрения зависимостей вместе с хорошей и надежной структурой IoC (Windsor Castle...).Это поможет вам немного расслабиться.Лучше полагаться на абстракцию / интерфейс, а не на реализацию.

Вот основы http://www.infoq.com/articles/ddd-in-practice

Но хорошо, что вы решили пойти на подход Code First.Я действительно рекомендую такой подход, если у вас есть возможность.Но иногда, когда старые устаревшие системы вмешиваются, все не так просто.

...