繁体   English   中英

使用实体框架按名称获取表

[英]Get table by name with Entity Framework

我有这段代码,一切正常。

using (var db = new ApplicationDbContext())
{
    md = db.Modles.ToList();
}

我的问题是我有一个名为M的参数,这是我创建的模型的名称,因此它可以是动态的。

有没有办法做这样的事情:

var M = "Modles"; // or M = "Modles2"
using (var db = new ApplicationDbContext())
{
    md = db[M].ToList();
}

我试过实体框架按名称获取表实体框架按变量名称获取表,但是没有任何运气。 能做到吗?

您提供的第二个链接上的解决方案实际上不起作用,因为它缺少一个简单的步骤: DbContext上的Set方法是一个通用方法,因此在编译时或至少在运行时,您不能简单地调用它而不告诉类型。 由于希望动态调用它,因此可以选择运行时解析。 下面的示例应该起作用:

var entityNs = "myentities";
var table = "Model";
var entityType = Type.GetType($"{entityNs}.{table}");
var methodInfo = typeof(ApplicationDbContext).GetMethod("Set");
var generic = methodInfo.MakeGenericMethod(entityType);
dynamic dbSet = generic.Invoke(myContext, null);
var list = dbSet.GetList();

参考: 如何使用反射调用泛型方法?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM