bbu*_*ver 6 c# dbset 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]);
Run Code Online (Sandbox Code Playgroud)
上面的代码来自这篇文章,我可以DbSet动态地。我怎样才能在 Entity Framework Core 中做到这一点?
我在
DbSet dbSet = dbContext.Set(myDictionary[tableName]);
Run Code Online (Sandbox Code Playgroud)
Set新版本中似乎方法已更改。
帮助表示赞赏。
如果您想获得 by DbSet<TEntity>,TEntity请使用:
var dbSet = dbContext.Set<TEntity>();
Run Code Online (Sandbox Code Playgroud)
如果您想根据字符串名称和字典调用该方法,则必须使用反射。
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 );
Run Code Online (Sandbox Code Playgroud)