2012-02-12 9 views
3

.NETのpocoジェネレーターが何をするべきかを理解しようとしています。私の意見では、私はedmxファイルからPOCOを作成し、テーブルのフィールドに基づいてクラスを生成するエンティティを選択できるコード生成ツールでなければなりませんが、生成されたpoco名をカスタマイズすることができます私のedmx designer.csファイルで生成されたクラス名から。たとえば、次のように言ってください:Customerという名前のテーブルがedmxファイルにあります。今度はpoco生成ツールを使用して、say、BusinessCustomersというクラスを作成することができます。POCOジェネレーターの理解

しかし、私は生成されたクラス名をカスタマイズすることなくクラスを生成していますが、私はthis exampleからそのようなポコを生成すると、コード生成ツールがまだ所有しているクラスになりがちです。生成されたpocoクラスは、Customersという名前の部分クラスであり、基本的にedmxクラスの拡張です。私はポコスを生成するエンティティを選択的に選択することはできません。したがって、生成されたクラスに変更を加えた場合は、edmxファイルに新しいテーブルを追加し、そのツールを使用して新しいポコを作成したいときはいつでも失われます。もちろん、生成されたクラスを別のプロジェクトにコピーしてそこから使用することもできますが、それが正しいかどうかはわかりません。 上記の例では、生成されたpocoクラスは、テーブルの各フィールドに1つ、仮想プロパティを持つ、Customersという名前の部分クラスです。 edmx designer.csはきれいに拭き取られます。私はまだ自分のコードでツールで生成されたクラスを使用しています。別のpocoクラスが必要な場合、私はまだそれを自分で書く必要があります... pocoジェネレータはedmxクラスをそのままにして新しいクラスセットを作成するはずですか?

最低限私が望むのは、私のためにクラスを生成し、生成すると再びそれに触れることのないツールです。私がADO.NET C#POCOエンティティジェネレータを正しく理解していれば、そのような仕事はしません。そこに優れたツールがありますか、私は自分の要件のために私のポコのクラスをコーディングすることに固執すべきですか?どう思いますか?

申し訳ありません私の質問は少し混乱しています。私は主題の限られた、おそらく間違った理解でこれを書いています。お時間をいただきありがとうございます...

答えて

1

POCOクラスのジェネレータは、生成プロセスをカスタマイズするTDMテンプレートを変更し、プロジェクトを含むEDMXから分離することによって、生成プロセスをカスタマイズするのに役立ちます。 これは、EDMXをカスタムジェネレータや、edmx自体とは全く異なるプロジェクトにある生成されたクラスを埋めるいくつかの他のデータ供給構造に置き換えて、テストするのに本当に役立ちます。

カスタマイズのために、これらのクラスをパーシャル(デフォルトであるかどうかはわかりませんが、T4テンプレートで簡単に変更できます)と宣言するだけです。つまり、カスタムコードを保持しているクラスの部分を表す別のファイルがあるのです。そうすれば、クラスを再生成するときに変更を失うことなくクラスをカスタマイズできます。

POCO Generatorを使用すると、DBテーブルをクラスにマッピングするプロセス全体が簡単になります。

+0

ところでT4テンプレートを編集しようとしているのであれば、これまでにT4テンプレートを編集していないのであれば、このタスクは少し難題かもしれません。インテリセンスやサンプルを書くのに役立つスタイリッシュなプラグインがいくつかありますので、それらを見てください。 – masimplo

+0

生成されたpocoクラスは、Customersという名前の部分クラスで、テーブル内の各フィールドに1つの仮想プロパティがあります。 edmx designer.csはきれいに拭き取られます。私はまだ自分のコードでツールで生成されたクラスを使用しています。別のpocoクラスが必要な場合、私はまだそれを自分で書く必要があります... pocoジェネレータはedmxクラスをそのままにして新しいクラスセットを作成するはずですか? – user20358

+0

いいえ、POCOジェネレータは、edmxファイル内のコードと、可能な別のクラスにコードを分割することになっています。T4を使用してカスタマイズします。2.別のプロジェクトに配置して、実際にEF4クラスではなく自分のクラスを作成し、EFをダンプすることを決定したとしても、それを使用しますあなたがフィットすると思うようなファイル。 – masimplo

関連する問題