2
4

1 に答える 1

7

EF が POCO エンティティをサポートする前は、非 POCO エンティティのみをサポートしていました。非 POCO エンティティは EntityObject クラスから派生し、各エンティティ、複合型、列挙型、メンバーなどは EF 固有の属性に関連付ける必要があり、そうしないと機能しませんでした。非 POCO エンティティが存在するアセンブリには、EdmSchemaAttribute. アセンブリにこの属性がある場合、EF は、アセンブリに非 POCO 属性が含まれていることを認識し、それらのみを探しました。POCO 型と非 POCO 型は、同じアセンブリに存在できませんでした。あなたの場合、あなたは持っているようですEdmSchemaAttributeプロジェクトのどこかに定義されています (これはアセンブリ レベルの属性であるため、基本的に任意のファイルに存在することに注意してください)。POCO タイプのみを使用する場合は、属性を見つけて削除します。POCO 型と非 POCO 型を混在させたい場合は、非 POCO 型が定義されているアセンブリとは異なるアセンブリで POCO 型を定義する必要があります (ただし、POCO 型と非 POCO 型を混在させることはお勧めしません)。EF Designer では、VS2010 (EntityObject ベースのエンティティおよび ObjectContext ベースのコンテキスト) では、POCO 以外の型が既定の選択であったことに注意してください。VS2012 に同梱されているデザイナーでは、デフォルトのコンテキストは DbContext ですが、コード生成戦略を「デフォルト」に変更することもできます (面白いことに、DbContext ベースのコンテキストと POCO エンティティを作成するデフォルトのコード生成戦略は「なし」と呼ばれます)。EdmSchemAttribute. VS2013 (および VS2012 のOOB バージョン) では、EF6 をターゲットにしている場合、コード生成戦略を選択できません (すべてが T4 ベースです - ObjectContext が本当に必要な場合は、VS ギャラリーでテンプレートを見つけることができるはずです)。ただし、EF5 をターゲットにしている場合は、非 POCO のものを生成する戦略を選択できますが、DbContext とその仲間である T4 とは対照的に、Legacy ObjectContext のようなものと呼ばれていると思います。

于 2013-10-23T19:56:24.547 に答える