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]);
以上代码来自此post,在这里我可以动态DbSet
。如何在Entity Framework Core中进行这项工作?
我在
遇到错误DbSet dbSet = dbContext.Set(myDictionary[tableName]);
好像Set
方法在新版本中已更改。
感谢您的帮助。
答案 0 :(得分:0)
如果您尝试通过DbSet<TEntity>
获得TEntity
,请使用:
var dbSet = dbContext.Set<TEntity>();
如果要基于字符串名称和字典来调用该方法,则必须使用反射。
EF Core似乎没有非通用的DbSet
,因此您必须使用非通用接口之一,例如IQueryable
,而我要添加一个{{1} },您可以调用它来获取Func
而不是类型,如果您坚持走字典映射路线。例如:
IQueryable