簡體   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