4

.edmxファイルを作成するデータベースファーストアプローチを実行すると、VS.NET2012のEF5で何が起こっているのか少し混乱しています。私が混乱している理由は、EF 4.xには非常に多くの情報があり、EF5に関連して多くの情報が不正確であるためだと思います。

データベースファーストアプローチでPOCOを使用するEF4では、POCOクラスを作成し、コード生成戦略=なしを設定するようにしてください。次に、EFで使用するPOCOクラスの知識を持つ`ObjectContext'から継承する別のsay'Entites'クラスを作成します。

VS.NET 2012を使用するEF5では、データベースファーストアプローチを実行すると、コード生成戦略= Noneすでに設定されており、デフォルトのT4テンプレートによって生成された結果のクラスは、すでにPOCOクラスを作成しているようです。結果のクラスには、ObjectContextまたはの継承はありませんDBContext。これは、自動生成されたエンティティがデフォルトでPOCOクラスとして作成される方法ですか?

答えが「はい」の場合、私は実際にそれがとても好きです。私の主な質問は、それらのPOCOクラスを別のレイヤーにヤンクすることはできますか?現在、それらは「MyModel.tt」の下に表示されているので、それらを削除すると、モデルを更新しても変更が反映されないと思いますよね?

ありがとう!

4

1 に答える 1

3

データベースファーストアプローチでPOCOを使用するEF4では、POCOクラスを作成し、コード生成戦略=なしを設定するようにしてください。次に、EFで使用するPOCOクラスの知識を持つ`ObjectContext'から継承する別のsay'Entites'クラスを作成します。

これは中心的なアイデアでしたが、たとえばVS Galleryからダウンロードした追加のT4テンプレートを使用して、POCOクラスを生成することもできます。

VS.NET 2012を使用するEF5では、データベースファーストアプローチを実行すると、コード生成戦略= Noneがすでに設定されており、デフォルトのT4テンプレートによって生成された結果のクラスは、すでにPOCOクラスを作成しているようです。結果のクラスには、ObjectContextまたはDBContextの継承はありません。これは、自動生成されたエンティティがデフォルトでPOCOクラスとして作成される方法ですか?

はい。VS 2012は、デフォルトで、モデルからPOCOクラスを生成するためにT4テンプレートを使用します。

それらのPOCOクラスを別のレイヤーにヤンクできますか?現在、それらは「MyModel.tt」の下に表示されているので、それらを削除すると、モデルを更新しても変更が反映されないと思いますよね?

はい、いくつかの制限があります。.ttファイル全体を別のフォルダーまたはプロジェクトに移動できます。このファイルのパスを更新して、EDMXファイルの正しい場所を指すようにする必要があります。.ttファイルは、POCOクラスの生成を担当するT4テンプレートです。主な制限は自動更新である可能性があります。デフォルトの構成では、EDMXファイルが保存されるときに、テンプレートが自動的に更新および保存されます。テンプレートを保存すると、すべてのPOCOクラスの再生成がトリガーされます(=別の制限-これらの自動生成されたクラスは変更しないでください)。テンプレートを別のプロジェクトに移動すると、この自動マジックは機能しません。クラスの再生成を強制するには、.ttファイルのコンテキストメニューから[カスタムツールの実行]を手動でトリガーする必要があります。

于 2013-01-04T16:31:17.587 に答える