0

Entity Framework 3.5 / 4.0のデフォルトの型生成では、「Xxxx.designer.cs」ソースファイルの各型が出力されます(「Xxxx」は生成される型の名前です)。これにより、開発者は独自の「Xxxx.cs」ソースファイルを生成して、さらに実装したり、メタデータクラスなどに属性を追加したりできるようになりました。

VS2012でのデフォルトの型生成を含む、利用可能になった最新のT4テンプレート(POCO、Self Trackingなど)はすべて、「。designer」サフィックスなしで「Xxxx.cs」自体を生成します。

T4テンプレートの動作をオーバーライドして、ファイル名内に「.designer」を出力するのは簡単ですが、部分的な定義を通じてこれらのクラスを拡張することを実際に推奨されていないものがありませんか?

自己追跡エンティティを生成した最近のプロジェクトでは、メタデータクラス属性と.Equals(object)および.GetHashcode()(それ以外の場合はEF)のオーバーライドを使用して定義を拡張できるように、発行されたファイルの名前を変更する必要があることがわかりました。たとえば、重複を正しく検出できませんでした)。

放出された部分クラスをそのままにしておくことが期待されているところに私が見逃したものはありますか、それともこれは単なる見落としであり、ほとんどの人は放出されているソースファイルの名前を変更する必要がありますか?

4

1 に答える 1

0

コード生成戦略は VS2012 で変更されました。生成される前のコードは、EntityObject ベースのエンティティと、ObjectContext クラスから派生したコンテキスト クラスを使用していました。デフォルトでは、VS2012 は POCO エンティティと DbContext 派生コンテキストを生成します。ObjectContext ベースのコンテキストと EntityObject ベースのエンティティが必要な場合は、次のことを行う必要があります。

  1. デザイナー画面を右クリックし、プロパティを選択します
  2. 「コード生成戦略」を「なし」から「デフォルト」に変更します
  3. ソリューションから .tt ファイルを削除して、コンテキストとエンティティの重複を回避します。
于 2012-12-07T18:57:36.440 に答える