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
新版本更改了方法。帮助表示赞赏。
最佳答案
如果您想获得 DbSet<TEntity>
通过 TEntity
, 采用:
var dbSet = dbContext.Set<TEntity>();
如果要根据字符串名称和字典调用该方法,则必须使用反射。
EF Core 似乎没有非泛型
DbSet
所以你必须使用非通用接口(interface)之一,例如 IQueryable
我会包括一个Func
您可以调用它来获取 IQueryable
如果您坚持使用字典映射路线,而不仅仅是类型。例如:var myDictionary = new Dictionary<string, Func<DbContext, IQueryable>>()
{
{ "TblStudents", ( DbContext context ) => context.Set<TblStudent>() }
};
var dbSet = myDictionary[ "TblStudents" ].Invoke( dbContext );
关于c# - Entity Framework Core 中的动态 DbSet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52637924/