正如它在锡上所说,是否可以创建一个适合用作实体框架 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();
如果存储库的上下文设置为包含 a 的类,这是微不足道的DbSet<Widget> Widgets
,但是可以这样做以使我计划使用的实体类型直到运行时才知道,或者可能直到我实际使用它们才知道?因此,如果我有一个新类 Foo,我可以立即查询我的存储库, .Find<Foo>(123)
而不必先将 a 添加DbSet<Foo> Foos
到我的 DbContext 类中?
我认为这应该是可能的,因为 poco 类或持有对它们的引用的 DbContext 实例没有什么特别之处。