17

私はEF 4.1を使用しており、DBの最初のアプローチを使用しています。.edmx ファイルも作成しました。今、POCO クラスを作成したいと思います。

このために、NuGet から EF 4.x DbContext Generator と EF 4.x POCO Entity Generator をインストールしました。

ObjectContext から派生しているため、EF 4.1+ には DbContext を使用することをお勧めします。ただし、最初にEF 4.x POCO Entity Generatorを使用して、次にEF 4.x DbContext GeneratorでもPOCOクラスを生成しました。

編集:このADO.NET DbContext Generator と ADO.NET Poco Entity Generator (ObjectContext) を見つけました

どちらの場合でも、.Context.tt および Model.tt ファイルが生成されます。では、どちらのツールによって生成されたファイルの正確な違いは何ですか? EF 4.1+ に DbContext を使用することが推奨されるのはなぜですか?

また、ObjectContext の制限についても知りたいです。

4

1 に答える 1

17

DbContext は、ほとんどの一般的なタスクを使用する際の開発者のエクスペリエンスを向上させる新しい API です。単純に API の設計の方が優れていますが、より複雑な機能を使用する場合は、古い APIから取得ObjectContextして使用する必要があります。DbContext将来 EF を 5.x または 6.x にアップグレードする予定がある場合は、ADO.NET チームが推奨しているため、DbContext を使用するとおそらく簡単になります。

ジェネレーターに関しては、EF 4.x POCO ジェネレーターは、関係の修正を内部的に使用するより複雑なクラスを作成します。この機能は、遅延読み込みと一緒に使用すると非常に非効率的であることが判明したため、新しい EF DbContext ジェネレーターはそれを使用しません。

補足: ある API から別の API へのコード移行は完全にサポートされています。

  • DbContextコンストラクタ受け入れを使用ObjectContextして、ObjectContext API から DbContext API に移動できます。
  • アダプターを使用IObjectContextして、DbContext API から ObjectContext API に移動できます
于 2013-04-08T09:18:44.403 に答える