開発時間が短縮される以外に(Visual Studio 2010ベータ2には、私が認識しているPOCOエンティティオブジェクトを構築するためのT4テンプレートがありません)、Entity Frameworkがデフォルトで作成する従来のEntityObjectエンティティを使用することに利点はありますか?MicrosoftがPOCOオブジェクトを構築するためのT4テンプレートを提供している場合、私は誰もが従来の方法を使用したいと思う理由を理解しようとしています。
2 に答える
あなたは同時に2つの質問をしているようです。コードのみとモデルファースト、およびEntityObject
親タイプと任意の親タイプ。親のタイプに関係なく、モデルファーストでデザイナーのサポートを受けられます。デザイナーのサポートとは別に、モデルファーストでプリコンパイルされたビューを使用することもできます。これにより、パフォーマンスが大幅に向上します。
エンティティのランタイムタイプは、ランタイムで生成されたサブタイプではなく、期待どおりのタイプであるため、親として持つEntityObject
ことは、いわゆる「POCO」(通常は「プレーン」オブジェクトではなくプロキシベース)よりも有利な場合があります。 。
また、LINQサポートが最小限またはまったくない他のORMとは異なり、Entity Frameworkには豊富なLINQサポートがあり、実際のPOCOタイプに投影できます。したがって、エンティティの基本タイプを気にすることなく、真に永続性を無視するプレゼンテーションを作成することができます。ORMブラックボックスから出てくるタイプにとらわれることはありません。
EntityObject
データベースに永続化されるプライベートプロパティを許可します。プロキシタイプを使用するには、それらのプロパティが少なくとも保護されており、仮想である必要があります。したがって、EntityObject
より良いカプセル化が可能になる場合があります。
ちなみに、プロキシを使用することに利点がないことを示唆しようとはしていません。私は、その利点が何であるかについてのあなたの質問に答えようとしているだけですEntityObject
。
唯一のメリットはデザイナーのサポートだと思います。非ポコエンティティを使用することで他の利点を見つけることができません。