获取每个Entity Framework类的列表的通用方法

时间:2018-06-06 14:57:34

标签: c# entity-framework generics reflection

我的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 )。

1 个答案:

答案 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>();