【发布时间】:2013-02-12 17:48:55
【问题描述】:
正如它在锡上所说,是否可以创建一个适合用作实体框架 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,我可以立即将我的存储库查询到 .Find<Foo>(123),而不必先将 DbSet<Foo> Foos 添加到我的 DbContext 类中?
我认为这应该是可能的,因为 poco 类或持有对它们的引用的 DbContext 实例没有什么特别之处。
【问题讨论】:
标签: entity-framework