繁体   English   中英

Entity Framework Core 中的动态 DbSet

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM