2011-11-07 11 views
6

私は現在、ドメインドリブンデザインアプローチを開発に使用しており、Tim McCarthyのC#ブックによる.NETドメインドリブンデザインをガイドとして使用しています。ドメインドリブンデザインとエンティティフレームワーク4.1(コードファースト)

この本は本当に役立ちますが、エンティティフレームワーク、特に4.1で利用可能なコードファーストアプローチを使用することについては、ちょっと不安になってきています。

本の例に基づいて、階層化されたアーキテクチャアプローチは、インフラストラクチャ層がモデル/ドメインを見ることができないことを意味するはずです。

ドメインのポコを、階層化されたアプローチに違反することなく、インフラストラクチャ層に座っておく必要がある(私が想定している)dbコンテキストクラスにマッピングする最良の方法は何ですか?

私は自分の考えに完全に間違っている可能性があるので、私はまだ学んでいるように教えてください!

多くの感謝:)

アダム

+1

あなたがCode-First EFを使用している場合、POCOは実際にあなたのドメインモデルです – Didaxis

+0

それは私が理解したものですが、これらのオブジェクトを階層、特にインフラストラクチャからドメイン/モデルにどのように参照しますか? – adam

+0

私のモデルはクラスライブラリにあり、ビジネスライブラリはそのDLLを参照しています。私はUnit of WorkとRepositoryパターンに関する記事をオンラインで読むことをお勧めします - 彼らはPOCOとうまく連携します。ここに:http://www.asp.net/entity-framework/tutorials/implementing-the-repository-and-unit-of-work-patterns-in-an-asp-net-mvc-application – AFD

答えて

7

まあ、ほとんどのORMの今日、EF 4.1とNHibernateは(流暢Nhibenrateアドオン)などがマッピングクラスを介してDbのコンテキストにPOCOからのマッピングを記述することができます。これらのマッピングクラスは、おそらくORMセッション固有のクラスとともにインフラストラクチャデータベースプロジェクトに配置するのが最適です。

次に、POCOドメインクラスは、他のコンポーネントやプロジェクトへの参照を持たないドメインプロジェクトに配置する必要があります。しかし、インフラストラクチャデータベースプロジェクトはドメインを参照して、マッピングクラスが永続状態からPOCOをロードする方法を決定できるようにする必要があります。

優れた固体IoCフレームワーク(Windsor Castle ...)と一緒に多くの依存性注入を使用します。これは少し物事を緩めるのに役立ちます。インプリメンテーションではなく、抽象化/インタフェースに依存する方が優れています。ここで

は基本 http://www.infoq.com/articles/ddd-in-practice

しかし、あなたは、コードファーストアプローチのために行くことに決めた良いことです。私は本当にあなたがオプションを持っている場合は、そのアプローチをお勧めします。しかし、時には古いレガシーシステムが干渉すると、状況はそれほど簡単ではありません。

+0

ありがとうMagnus、これ私が取ったアプローチです - ドメインとインフラストラクチャ層の両方を参照する別々のアセンブリ! 昨日演奏したことで、コードファーストはEFの素晴らしい機能のようです! – adam

+0

幸運のアダム。他のDDDの問題を私に直接聞いたり話したりしてください。私はいつも人々がさまざまな方法で問題を見ている方法に興味深いです... –

+0

ありがとうマグナス - 私はいくつかの質問があります、あなたに連絡する最善の方法は何ですか? – adam

関連する問題