c# - 仅当上下文使用关系数据库提供程序时才能使用特定于关系的方法?

标签 c# oracle entity-framework-core

我在尝试调用DbContext.Database.Migrate时遇到了此异常。 看起来这在网络上并不常见(或者谷歌在搜索它时遇到了一些麻烦?)。我能找到的唯一可能的原因是内存数据库或某种非关系的提供程序?

但是在调试时,我可以看到提供程序名称是 Oracle.EntityFrameworkCore,我正在使用 Oracle.EntityFrameworkCore 2.19.30(用于连接到 Oracle 数据库) )。所以现在很困惑,我不确定这里出了什么问题。

代码很简单,如下:

_dbContext.Database.Migrate();

最佳答案

我认为抛出的异常非常令人困惑。我必须查看 RelationalDatabaseFacadeExtensions.GetRelationalService 的源代码,通过它我可以看到 TService 未加载。该服务类型可能包含在某个dll中(最有可能的是Microsoft.EntityFrameworkCore.Relational.dll,如果该dll未正确加载,它将抛出所描述的异常。

实际上,就我而言,该 dll 加载的版本是错误的(加载的是 2.2.4.0,而 Microsoft.EntityFrameworkCore 版本是 2.2.6.0)。所有这一切都是在我尝试动态加载它们时发生的(没有在项目中紧密引用它们)。

关于c# - 仅当上下文使用关系数据库提供程序时才能使用特定于关系的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57433729/

相关文章:

c# - DLL 中有什么以及它是如何工作的?

c# - 如何检查枚举标志是否与另一个枚举一起升起?

c# - 如何在 C# 上更新和显示数据库结果

c# - 此关系的哪一部分 WillCascadeOnDelete(true)?

java - 使用函数调用 Java SOURCE

Azure 服务总线事务发件箱模式的替代方案

c# - EF 核心 2.1。使用自定义数据库架构进行迁移

c# - 从 DateTime 列中为每一天选择最小时间值

oracle - PL/SQL 查询 IN 逗号分隔字符串

sql - Oracle - 用句号表示千位,用逗号表示小数点