我正在开发一个MVC 5应用程序。我在我的数据库上查询:
var result = db.ABCs.AsNoTracking().FirstOrDefault(e => e.Id == Id);
但是,如果我想创建一个泛型方法并且在编译时不知道模型的名称,该怎么办?我想查询在运行时传递给方法的任何模型类。 有点像:
var result = db.<T>.Where(x => x.Id == Id).ToList();
我该怎么做?我使用数据库第一种方法,没有存储库或UoW。
答案 0 :(得分:1)
为此,您需要提供有关Id
属性的一些信息。您可以使用common为所有实体属性创建接口:
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);