我的Entity Framework类(v6)有这个方法从我的数据库中获取该表中的所有元素:
List<FooClass> GetAll_FooClass()
{
return dbContext.FooClass.ToList();
}
所以我想要的是一个方法,它会做同样的但是可以在我拥有的每个实体类上使用(我个人意思)。
是否可能,如果可行,我该如何实施呢?
编辑:我似乎把FooClass误认为是一个类,而它是dbContext对象的一个属性。
public class MyDbContext : DbContext
{
public MyDbContext()
{ }
public virtual DbSet<FooClass> FooClass { get; set; }
}
所以我现在正尝试使用 System.Type ( PropertyInfo 和 MethodInfo )。
答案 0 :(得分:0)
您可以使用采用实体类型的通用方法。例如:
public List<TEntity> GetAll<TEntity>()
where TEntity : class //This is important as the Set method requires it
{
//Obviously don't do this, but for completeness:
var dbContext = new MyContext();
//And here is the real 'magic':
return dbContext.Set<TEntity>().ToList();
}
要使用它,假设您的上下文看起来像这样:
public class MyContext : DbContext
{
public DbSet<Zombie> Zombies { get; set; }
public DbSet<Human> Humans { get; set; }
}
你会这样称呼:
var allOfTheZombies = GetAll<Zombie>();