gpt4 book ai didi

c# - Entity Framework Core 中的动态 DbSet

转载 作者:行者123 更新时间:2023-12-03 14:39:07 25 4
gpt4 key购买 nike

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com