1 に答える
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 のようなものと呼ばれていると思います。