Entity Framework Core 中的动态 DbSet

2023-12-21

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 https://stackoverflow.com/questions/44142775/dynamically-instantiate-model-object-in-entity-framework-db-first-by-passing-typ/44143131#44143131我可以在哪里DbSet动态地。如何在 Entity Framework Core 中实现此功能?

我收到错误

DbSet dbSet = dbContext.Set(myDictionary[tableName]);

似乎Set新版本改变了方法。

感谢帮助。


如果你想获得DbSet<TEntity> by TEntity, use:

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 );
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Entity Framework Core 中的动态 DbSet 的相关文章

  • 如何使用 C# 中的参数将用户重定向到 paypal

    如果我有像下面这样的简单表格 我可以用它来将用户重定向到 PayPal 以完成付款
  • “构建”构建我的项目,“构建解决方案”则不构建

    我刚刚开始使用VS2010 我有一个较大的解决方案 已从 VS2008 成功迁移 我已将一个名为 Test 的控制台应用程序项目添加到解决方案中 选择构建 gt 构建解决方案不编译新项目 选择构建 gt 构建测试确实构建了项目 在失败的情况
  • 动态加载程序集的应用程序配置

    我正在尝试将模块动态加载到我的应用程序中 但我想为每个模块指定单独的 app config 文件 假设我的主应用程序有以下 app config 设置
  • 按成员序列化

    我已经实现了template
  • 在结构中使用 typedef 枚举并避免类型混合警告

    我正在使用 C99 我的编译器是 IAR Embedded workbench 但我认为这个问题对于其他一些编译器也有效 我有一个 typedef 枚举 其中包含一些项目 并且我向该新类型的结构添加了一个元素 typedef enum fo
  • Asp.NET WebApi 中类似文件名称的路由

    是否可以在 ASP NET Web API 路由配置中添加一条路由 以允许处理看起来有点像文件名的 URL 我尝试添加以下条目WebApiConfig Register 但这不起作用 使用 URIapi foo 0de7ebfa 3a55
  • 使用实体框架模型输入安全密钥

    这是我今天的完美想法 Entity Framework 中的强类型 ID 动机 比较 ModelTypeA ID 和 ModelTypeB ID 总是 至少几乎 错误 为什么编译时不处理它 如果您使用每个请求示例 DbContext 那么很
  • 从Web API同步调用外部api

    我需要从我的 Web API 2 控制器调用外部 api 类似于此处的要求 使用 HttpClient 从 Web API 操作调用外部 HTTP 服务 https stackoverflow com questions 13222998
  • 在 Windows 窗体中保存带有 Alpha 通道的单色位图会保存不同(错误)的颜色

    在 C NET 2 0 Windows 窗体 Visual Studio Express 2010 中 我保存由相同颜色组成的图像 Bitmap bitmap new Bitmap width height PixelFormat Form
  • HTTPWebResponse 响应字符串被截断

    应用程序正在与 REST 服务通信 Fiddler 显示作为 Apps 响应传入的完整良好 XML 响应 该应用程序位于法属波利尼西亚 在新西兰也有一个相同的副本 因此主要嫌疑人似乎在编码 但我们已经检查过 但空手而归 查看流读取器的输出字
  • 如何在 C 中调用采用匿名结构的函数?

    如何在 C 中调用采用匿名结构的函数 比如这个函数 void func struct int x p printf i n p x 当提供原型的函数声明在范围内时 调用该函数的参数必须具有与原型中声明的类型兼容的类型 其中 兼容 具有标准定
  • 如何序列化/反序列化自定义数据集

    我有一个 winforms 应用程序 它使用强类型的自定义数据集来保存数据进行处理 它由数据库中的数据填充 我有一个用户控件 它接受任何自定义数据集并在数据网格中显示内容 这用于测试和调试 为了使控件可重用 我将自定义数据集视为普通的 Sy
  • 垃圾收集器是否在单独的进程中运行?

    垃圾收集器是否在单独的进程中启动 例如 如果我们尝试测量某段代码所花费的进程时间 并且在此期间垃圾收集器开始收集 它会在新进程上启动还是在同一进程中启动 它的工作原理如下吗 Code Process 1 gt Garbage Collect
  • 什么时候虚拟继承是一个好的设计? [复制]

    这个问题在这里已经有答案了 EDIT3 请务必在回答之前清楚地了解我要问的内容 有 EDIT2 和很多评论 有 或曾经 有很多答案清楚地表明了对问题的误解 我知道这也是我的错 对此感到抱歉 嗨 我查看了有关虚拟继承的问题 class B p
  • 覆盖子类中的字段或属性

    我有一个抽象基类 我想声明一个字段或属性 该字段或属性在从该父类继承的每个类中具有不同的值 我想在基类中定义它 以便我可以在基类方法中引用它 例如覆盖 ToString 来表示 此对象的类型为 property field 我有三种方法可以
  • 链接器错误:已定义

    我尝试在 Microsoft Visual Studio 2012 中编译我的 Visual C 项目 使用 MFC 但出现以下错误 error LNK2005 void cdecl operator new unsigned int 2
  • 如何从两个不同的项目中获取文件夹的相对路径

    我有两个项目和一个共享库 用于从此文件夹加载图像 C MainProject Project1 Images 项目1的文件夹 C MainProject Project1 Files Bin x86 Debug 其中有project1 ex
  • 为什么编译时浮点计算可能不会得到与运行时计算相同的结果?

    In the speaker mentioned Compile time floating point calculations might not have the same results as runtime calculation
  • 混合 ExecutionContext.SuppressFlow 和任务时 AsyncLocal.Value 出现意外值

    在应用程序中 由于 AsyncLocal 的错误 意外值 我遇到了奇怪的行为 尽管我抑制了执行上下文的流程 但 AsyncLocal Value 属性有时不会在新生成的任务的执行范围内重置 下面我创建了一个最小的可重现示例来演示该问题 pr
  • Windows 和 Linux 上的线程

    我在互联网上看到过在 Windows 上使用 C 制作多线程应用程序的教程 以及在 Linux 上执行相同操作的其他教程 但不能同时用于两者 是否存在即使在 Linux 或 Windows 上编译也能工作的函数 您需要使用一个包含两者的实现

随机推荐

  • 变量扩展之间的排序

    对于这个非变量示例 int Func1 double Func2 void MyFunc int double int main MyFunc Func1 Func2 没有指定是否Func1 or Func2 首先计算 只是两者都必须在之前
  • R中计算多列并分组

    最后一个问题的答案帮助我理解了dplyr n 但我仍然无法应用于我试图解决的问题 所以 我在这里发布数据和实际问题 数据如下 finalCalledPartyNumber Call Day Call Date Block Answered
  • 如何根据条件附加指令

    我有两个不同的指令 第一个返回带有实时视频的 iframe 第二个返回带有最近视频的 iframe 条件是 如果存在实时内容 则附加实时指令 否则附加最近的视频指令 我尝试过使用普通 html 而不是指令 它可以工作 但是当我放置指令元素时
  • 如何将 byte[] 反序列化为通用对象以在方法调用时进行转换

    我正在研究一个对象加密类 我已经解决了所有问题 但我希望能够使用一种反序列化方法来加密 解密任何对象类型 到目前为止 唯一阻碍我的是反序列化方法 我有返回 type object 的函数 希望返回弱类型对象 只要我在返回值赋值期间转换类型
  • PHP 是否允许命名参数,以便可以在函数调用中省略可选参数?

    PHP 中是否可以在调用函数 方法时指定命名可选参数 跳过您不想指定的参数 就像在 python 中一样 就像是 function foo a b c whatever foo hello c bar we want b as the de
  • 如何以编程方式设置图像源

    当图像的 Source 属性按以下方式设置时 图片取自 Images down png 我如何以编程方式做同样的事情
  • R/Shiny:从服务器上的文件夹下载多个文件 (zip)

    我想创建一个 zip 存档 包含多个 xlsx 文件 并将其保存在本地 文件存储在服务器端的文件夹中 用户使用 checkboxInput 选择要压缩的文件 这是复选框的代码 get files lt reactive list files
  • R中按日期计算唯一值的数量

    请帮我计算每个日期的唯一 ID 的数量 所以 最初 有这个 ID 和日期的数据框 ID Date 1 2009 11 1 1 2009 11 2 1 2009 11 2 2 2009 11 1 2 2009 11 1 2 2009 11 2
  • nginx auth_request:访问原始查询参数

    我试图弄清楚是否可以将查询参数从原始 URL 转发到auth request处理程序 服务 用户应该能够将 API 令牌添加为查询参数 如下所示 https example com api user token 23726386482367
  • Rails - 给定 @Comments - 如何获取倒数第二条评论而不重新访问数据库

    给定的 comments 可以包含 1 条或多条记录 如何获取倒数第二条评论 Thanks 我想这也可以称为倒数第二个 record comments 2 Here are the docs http ruby doc org core A
  • C# 图像裁剪、分割、保存

    如主题所述 我有一张图片 private Image testing testing new Bitmap sampleimg jpg 我想将其分成 3 x 3 矩阵 即总共 9 张图像并保存 有什么技巧或技巧可以让这个简单吗 我正在使用
  • 使用 Beautiful Soup 从字符串中去除 html 标签

    有谁有一些示例代码来说明如何使用Python的Beautiful Soup从文本字符串中删除所有html标签 除了一些标签 我想删除所有 javascript 和 html 标签 除了 a a b b i i 还有类似的事情 a a 感谢您
  • Magento - 以编程方式保存的产品在后端不可见

    我尝试在 Magento 1 5 1 上使用以下代码创建一个产品 产品已保存在数据库中 但未出现在后端产品网格中 如果我调用产品视图 url 某些字段不会填写 例如 名称 描述 请参阅 NOK product Mage getModel c
  • JavaScript 中的一个奇怪的 return 语句[重复]

    这个问题在这里已经有答案了 以下函数可以工作并完成其预期的工作 返回指定的所需值 function returnValue return value 只是返回值被分成一个新行 如果如下删除一对括号 则返回undefined function
  • 向量迭代器不可递增

    编辑 我删除了 else 部分 迭代器被迭代了两次 运行时出错 文件 c program files x86 microsoft Visual Studio 10 0 vc include vector 线路 99 表达式 向量迭代器不可递
  • 如何使用Polymer1.0实现长按事件?

    长按事件似乎不属于聚合物规范的一部分 你会如何实施 我考虑过使用一种行为并使用down and up与一些人发生的事件debounce管理此类新事件的技巧 但这意味着我必须创建一个自定义元素才能使用此行为 并且不能直接在我想要的任何元素上使
  • 如何限制用户访问HTTP服务器上的文件?

    我正在编写一个网络应用程序 允许用户在应用程序上上传文件 用户单击 上传 按钮后 文件将上传到 HTTP 服务器上 用户可以通过从路径获取文件来接收文件 例如 http www demo com user abc download the
  • Rails 阻止在 before_create 回调中创建对象

    我想检查新记录的一些属性 如果某些条件成立 则阻止创建对象 before create check if exists def check if exists if condition logic for not creating the
  • 如何在 Swift 3 中检查当前线程?

    如何检查 Swift 3 中当前线程是哪一个 在 Swift 的早期版本中 可以通过执行以下操作来检查当前线程是否为主线程 NSThread isMainThread 看起来好像很简单Thread isMainThread在斯威夫特 3 中
  • Entity Framework Core 中的动态 DbSet

    string tableName TblStudents Dictionary