データベースを備えたレガシーEF4ライブラリがあります-EntityObjectsを使用して最初に生成されたObjectContext。ゆっくりとDbContextの使用に移行したいので、ある程度のガイダンスが必要です。
DbContextのオーバーロードの1つは、既存のObjectContextを取ります。これにより、既存のObjectContextをDbContextでラップし、IDbSetプロパティを介して既存のEntityObjectsを公開できると思いました。残念ながら、DbContextを作成する場合、IDbSetプロパティは作成されず、代わりに次のメッセージとともに例外がスローされます。「型がクラスとして定義され、プリミティブ、ネスト、または汎用ではなく、EntityObjectから継承されていないことを確認してください。 「」
IDbSetでDbContextを使用して、既存のObjectContextとEntityObjectsを公開する方法はありませんか?ObjectContextを使用してDbContextを作成できるが、エンティティ自体を公開できないのは奇妙に思えます。
サンプルコードは次のとおりです。
public class MyDbContext : DbContext
{
public MyDbContext(MyObjectContext objectContext, bool dbContextOwnsObjectContext)
: base(objectContext, dbContextOwnsObjectContext)
{
}
public IDbSet<Person> People { get; set; }
}
例外は、DbContextがIDbSetを作成しようとしたことが原因で発生します。Personは、既存のEDMXのEntityObjectです。