[英]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.