web-dev-qa-db-ja.com

ADO.NET DbContext GeneratorとADO.NET Poco Entity Generator(ObjectContext)

私は、DDDへのアプローチで設計されたプロジェクトのデータアクセスインフラストラクチャの実装を開始しようとしています(DDDでの私の最初の試みですので、優しくしてください;-))。

Entity Frameworkを使用します。これまで、私はジュリー・ラーマンが彼女のすばらしい本で教えていた方法を探していました Programming Entity Framework 、whereADO.NET POCO Entity Generatorが使用され、T4テンプレートにいくつかの変更が加えられ、いくつかのカスタムコードが追加されています。
今日、私はEF4.1とADO.NET DbContext GeneratorDatabase Firstアプローチを使用して、どちらに行くかを決定しようとしています。

DbContextとDDDでのEF4.1のアプローチは、POCOエンティティよりもすてきできれいな方法のようですが、EF4.1はまだRCであるため、近い将来にいくつかの問題につながる可能性があると思います。

ADO.NETチームのブログ から、EF4.1にはないことを知っています

  • 列挙型のサポート
  • 空間データ型のサポート
  • Code Firstでのストアドプロシージャのサポート
  • Code Firstの移行サポート
  • Code Firstのカスタマイズ可能な規則

私の理解から、Database Firstを使用するため、少数の機能があります含まれていない。

結論として、私の質問は次のとおりです。
POCO Entities GeneratorをEF4.1 DbContext Generatorに置き換えることはできますか?

58
Nelson Reis

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 AP​​IまたはDbContext AP​​I? ObjectContext AP​​Iは、ドキュメントとブログ投稿でより適切にカバーされます。あなたはそれについてたくさんの例を見つけることができます。また、その制限はすでによく知られています。 DbContext AP​​Iは新しいリリースです。主にコードファーストアプローチによる非常に有望なリリース。ブログ投稿の数はまだ非常に限られており、本もAPIも十分に証明されていません。新しいAPIと戦う準備ができているかどうかによりますか?そうでない場合は、コードファーストアプローチが必要ないため、ObjectContext AP​​Iが依然として適切な選択です。

54
Ladislav Mrnka