1

オブジェクト コンテキストに基づく既存の .net 4 アプリケーションがあります。現在、DbContext を継承し、コンストラクター メソッドを呼び出して、既存のオブジェクト コンテキストを渡すことにより、DbContext を既存のアプリケーションに追加しています。すなわち

public class DemoModelEntitiesDbContext : DbContext
    {
        public DemoModelEntitiesDbContext():base(new DemoModelEntities(), dbContextOwnsObjectContext:true)
        {
        }
        public DbSet<ELMAH_Error> ELMAH_Error { get; set; }
    }

私が電話するときよりも、

using (DemoModelEntitiesDbContext context = new DemoModelEntitiesDbContext())
            {
                foreach (ELMAH_Error entity in context.ELMAH_Error.ToList())
                {
                    Console.WriteLine(entity.ID);
                }
}

次のエラー メッセージが表示されます。「型 'ObjectContextDemo.ELMAH_Error' がマップされていませんでした。Ignore メソッドまたは NotMappedAttribute データ注釈を使用して、型が明示的に除外されていないことを確認してください。型がクラスとして定義されていないことを確認してください。プリミティブ、ネストされた、またはジェネリックであり、EntityObject から継承しません。」既存のエンティティが EntityObject から継承されていることを確認しました。DbContext を既存のアプリケーションに追加し、既存のコードを変更しない方法は?

4

1 に答える 1

0

オブジェクト コンテキストにキャストできますが、既存のコードに 100% 固執する場合、DbContext からは何も得られません。しかし、EntityObjectsではなくPOCOでそれを行ったので、entityobjectsで機能することを確認できません。

そうしないと、変更なしでそれを行うことはできません。DbContext は EntityObject をサポートしていません。DbContext は POCO 向けに設計されています。さらに、DbContext と ObjectContext の間には他にもコードの違いがあります。すでに POCO を使用している場合でも、変更する必要があります。EF デザイナーを使用している場合は、別のコード生成テンプレート (ef5 DbContext テンプレート) を使用して開始する必要があります。しかし、その結果、クラスが大きく異なり、アプリ内の EF 呼び出しに多くの変更が加えられます。

于 2013-06-30T11:14:11.693 に答える