![](/img/trans.png)
[英]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.