如何使用EF 6查询通用模型

本文关键字:模型 查询 何使用 EF | 更新日期: 2023-09-27 18:14:55

我正在开发一个MVC 5应用程序。我查询我的数据库为:

var result = db.ABCs.AsNoTracking().FirstOrDefault(e => e.Id == Id);

但是如果我想创建一个泛型方法,并且在编译时不知道模型的名称该怎么办?我想查询在运行时传递给方法的任何模型类。如:

var result = db.<T>.Where(x => x.Id == Id).ToList();

我怎么能那样做呢?我使用数据库优先的方法,没有存储库或UoW。

如何使用EF 6查询通用模型

要做到这一点,您需要提供有关Id属性的一些信息。你可以创建所有实体属性的通用接口:

interface IEntity
{
    int Id {get;}
}

并在你的类中实现它:

class ABC : IEntity
{
    int Id {get; set;} 
    string Name {get;set;}
}
List<T> GetData<T>(int id) where T : class, IEntity
{
    var result = db.Set<T>().Where(x => x.Id == Id).ToList();
    return result;
}
...
var data = GetData<ABC>(10);