私は、DDDへのアプローチで設計されたプロジェクトのデータアクセスインフラストラクチャの実装を開始しようとしています(DDDでの私の最初の試みですので、優しくしてください;-))。
Entity Frameworkを使用します。これまで、私はジュリー・ラーマンが彼女のすばらしい本で教えていた方法を探していました Programming Entity Framework 、whereADO.NET POCO Entity Generatorが使用され、T4テンプレートにいくつかの変更が加えられ、いくつかのカスタムコードが追加されています。
今日、私はEF4.1とADO.NET DbContext Generator、Database Firstアプローチを使用して、どちらに行くかを決定しようとしています。
DbContextとDDDでのEF4.1のアプローチは、POCOエンティティよりもすてきできれいな方法のようですが、EF4.1はまだRCであるため、近い将来にいくつかの問題につながる可能性があると思います。
ADO.NETチームのブログ から、EF4.1にはないことを知っています:
私の理解から、Database Firstを使用するため、少数の機能があります含まれていない。
結論として、私の質問は次のとおりです。
POCO Entities GeneratorをEF4.1 DbContext Generatorに置き換えることはできますか?
clean POCOエンティティの作成の観点からは、2つのジェネレーターに違いはありません。両方のジェネレーターは同じエンティティを生成しますが、ADO.NET POCO Entity GeneratorはObjectContext
のAPIに基づいていますが、ADO.NET DbContext
GeneratorはDbContext
のAPIに基づいています。
DbContextのAPIにはいくつかの非常に素晴らしい新機能(ローカル、ナビゲーションプロパティのクエリなど)があり、APIは何らかの形で単純化されていますが、同時にObjectContext APIで使用される一部の機能がDbContext APIにないようです(または少なくともまだ十分に調査されていません)。
EF 4.1 RCは本稼働リリースです。これは、RTWでAPIが変更されないため、実際のアプリケーションをビルドできることを意味します(バグのみが修正されます)。また、RTWは来月に予定されているので、最終バージョンが出荷されるまではアプリケーションの準備ができていないと思います。
ObjectContext
APIまたはDbContext
API? ObjectContext
APIは、ドキュメントとブログ投稿でより適切にカバーされます。あなたはそれについてたくさんの例を見つけることができます。また、その制限はすでによく知られています。 DbContext
APIは新しいリリースです。主にコードファーストアプローチによる非常に有望なリリース。ブログ投稿の数はまだ非常に限られており、本もAPIも十分に証明されていません。新しいAPIと戦う準備ができているかどうかによりますか?そうでない場合は、コードファーストアプローチが必要ないため、ObjectContext
APIが依然として適切な選択です。