簡體   English   中英

Entity Framework Core 中的動態 DbSet

[英]Dynamic DbSet in Entity Framework Core

string tableName = "TblStudents";
Dictionary<string, Type> myDictionary = new Dictionary<string, Type>()
{
    { "TblStudents", typeof(TblStudent) },
    { "TblTeachers", typeof(TblTeacher) }
};

// Context always same
DBContext dbContext = new DBContext();
DbSet dbSet = dbContext.Set(myDictionary[tableName]);

上面的代碼來自這篇文章,我可以動態地DbSet 我怎樣才能在 Entity Framework Core 中做到這一點?

我在

DbSet dbSet = dbContext.Set(myDictionary[tableName]);

新版本中似乎更改了Set方法。

幫助表示贊賞。

如果您嘗試通過TEntity獲取DbSet<TEntity> ,請使用:

var dbSet = dbContext.Set<TEntity>();

如果您想根據字符串名稱和字典調用該方法,則必須使用反射。

EF Core 似乎沒有非通用DbSet因此您必須使用非通用接口之一,例如IQueryable並且我將包含一個Func ,您可以調用它來獲取IQueryable而不僅僅是類型,如果你堅持走字典映射路線。 例如:

var myDictionary = new Dictionary<string, Func<DbContext, IQueryable>>()
{
    { "TblStudents", ( DbContext context ) => context.Set<TblStudent>() }
};

var dbSet = myDictionary[ "TblStudents" ].Invoke( dbContext );

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM