缶に書かれているように、Entity Framework 5.0 POCOコンテキストとして使用するのに適したDbContextのインスタンスを作成することは可能ですか?
public DbSet<T> Entities { get; set; }
実行時まで設定/認識されませんか?
次のようなメソッドを持つリポジトリを作成したい
public TEntity Find<TEntity>(object key) where TEntity : class
{
return _context.Set<TEntity>().Find(key);
}
public void Update<TEntity>(TEntity entity) where TEntity : class
{
if (_context.Entry(entity).State == EntityState.Detached) //entity is detached
_context.Set<TEntity>().Attach(entity);
_context.Entry(entity).State = EntityState.Modified;
}
.... etc
そして、それらを次のように使用します。
Widget w = repository.Find<Widget>(123);
repository.SaveChanges();
リポジトリのコンテキストがを含むクラスに設定されている場合、これは簡単ですが、DbSet<Widget> Widgets
使用する予定のエンティティタイプが実行時までわからないように、または実際に使用するまでわからないようにすることはできますか?新しいクラスFooがある場合、 最初にDbContextクラスにを.Find<Foo>(123)
追加しなくても、すぐにリポジトリにクエリを実行できますか?DbSet<Foo> Foos
pocoクラスまたはそれらへの参照を保持するDbContextインスタンスについて特別なことは何もないので、これは可能であると思います。