[英]Entity Framework Core - Creating a dynamic DbSet Model from TableName
[英]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.