2011-01-25 7 views
1

私はすなわちEF4でPOCOを使用するときの最善の方法は何ですか?

  1. EDMXモデルを作成し、モデルがあなたのために重いエンティティを作成しないようにコード生成をオフにするエンティティフレームワークとPOCOの実施に向けてhere 3のアプローチを読みました。次に、いくつかの制限に従わなければならないPOCOクラスを作成します。
  2. VS 2010にダウンロードできるPOCO templateを使用できます。
  3. コードを使用する最初のアプローチでは、POCOをコード化し、コードでマッピングを定義します。 を行うには、hereからEF 4.0 Feature CTPが必要です。

私は個人的には2番目のアプローチが速いので選択するつもりでしたが、それはObjectContextから派生して以来私が念頭に置いておくべきことは何ですか?私は3番目のアプローチが最も柔軟性を与えるが、それはそれの価値があることを知っていますか?これについてのあなたの考えを共有してください..ありがとう!あなたは、「POCOテンプレート」を提供しているリンク

+0

ホストマシンにインストールされているものを制御できない場合は、共有ホスティング環境でCTPを使用できますか?私はこれが考慮することが重要だと思います。 – kahoon

答えて

2

が壊れている - しかし、私はあなたがこの意味想定しています

http://visualstudiogallery.msdn.microsoft.com/23df0450-5677-4926-96cc-173d02752313

このテンプレートを(とすべきである)オプション1と接続詞で使用することができます述べました。作成EDMXモデル

2 - - コード生成

3オフにします - POCOクラスを生成するために使用POCOジェネレータを

ザ・

1:私は私の現在のアプリケーションで使用するものだ

POCOは何に由来するものでもなく、純粋なPOCOです。

+0

3番目のオプションについてどう思いますか?その価値はありますか ?また、生成されたpocoクラスのコンテキストは 'ObjectContext'から派生していますが、それは問題か欠点だと思いますか? – Vishal

+0

私は最初にコードを使用していないので、私はそれにコメントすることはできません。個人的に私はモデル(EDMX)を見るのが好きです。 POCOクラス**はObjectContext **から派生しません。これはデフォルトのコード生成を使用する場合にのみ発生します。これらはPOCOではありません。 – RPM1984

+0

@ミスノマー:まず、派生したコンテキストを使う必要はありません。 ObjectContextは直接使用できます。 CTPでさえ、DbContextから派生したクラスを持つので、そこには何の欠点も見られません。これらの型を上位レイヤに公開したくない場合は、Unit of WorkおよびRepositoriesパターンをチェックするか、派生したObjectContextのインターフェイスを定義し、IoCコンテナを使用して実装を挿入します。 –

0

私のモデル/ポコのクラスをセットアップするときに、これらの2つのリンクが非常に重要であることがわかりました。 Poco generationおよびPoco options。上記のように、リポジトリパターンを使用している場合は、もちろん、edmxでコード生成をオフにし、派生したObjectContextクラスとPocoクラスの両方を、Microsoftが提供する2つのT4テンプレートを通じて作成することをお勧めします。

変更を加えずにT4テンプレートを使用すると、生成されたコードで[修正付きトラッキングプロキシを変更する]オプションが有効になっているPocoクラスが取得されます。

関連する問題