EF core 3.1 无法运行复杂的原始 SQL 查询

2024-01-01

以下查询在 EF core 2 上运行良好,但在 EF core 3 上会抛出错误! 我什至可以在 EF core 2 中的此查询之后添加一些包含,现在我已经放弃了。

query:

// just to have an Id
var id = Guid.NewGuid();
var resutl = Context.Parties.FromSqlInterpolated($@"WITH mainOffice AS 
             (SELECT * FROM Parties as o1 WHERE (Discriminator = N'Office')
              AND (Id = '{id}') 
              UNION ALL SELECT o.* FROM Parties AS o INNER JOIN mainOffice AS m 
              ON m.Id = o.ParentOfficeId)
              SELECT * FROM mainOffice as f").ToList();

其产生的错误如下:

使用不可组合 SQL 调用 FromSqlRaw 或 FromSqlInterpolated 并在其上编写查询。考虑打电话AsEnumerable在 FromSqlRaw 或 FromSqlInterpolated 方法执行之后 客户端的组成。

了解以下信息可能会有所帮助:

  • 表“Parties”是每个层次结构的一个表
  • 我尝试从根类型 DbSet 和我感兴趣的类型运行查询
  • FromSqlRaw 和 FromSqlInterpolated 均未成功
  • 添加“AsEnumerable”也没有帮助

我是不是忘记了什么?我究竟做错了什么? “不可组合 SQL”是什么意思?这是否意味着 EF core 正在尝试解释查询?


我没有答案,但我现在知道原因了。

生成此错误的原因与此问题类似:FromSql 方法与存储过程一起使用时无法组合 https://learn.microsoft.com/en-us/ef/core/what-is-new/ef-core-3.0/breaking-changes#fromsql-method-when-used-with-stored-procedure-cannot-be-composed

在我的情况下,无论天气如何,我都会使用任何方法,因为我尝试查询的表包含某种不同的类型(每个层次结构的表),我的查询将始终在选择查询内扭曲以限制鉴别器。即使我从根编写查询,包装器选择查询也会使用所有可能的鉴别器生成。

所以这意味着我只能运行可以作为子查询放置的查询。我的查询不能,存储过程不能...

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

EF core 3.1 无法运行复杂的原始 SQL 查询 的相关文章

  • 如何检查oracle数据库中分配给模式、角色的对象的权限(DDL、DML、DCL)?

    大多数时候 我们都在与愚蠢的事情作斗争 以获取架构 角色及其对象的权限详细信息 并尝试找到一些简单的方法来获取有关它的所有详细信息以及伪查询代码 以批量生成授予语句以供进一步使用执行 所以我们在这里得到它 关于数据字典视图前缀的一些简单介绍
  • 如何比较行内的重叠值?

    我似乎对这个 SQL 查询有问题 SELECT FROM appts WHERE timeStart gt timeStart AND timeEnd lt timeEnd AND dayappt boatdate 时间格式为军用时间 物流
  • 如何将 sql 数据输出到 QCalendarWidget

    我希望能够在日历小部件上突出显示 SQL 数据库中的一天 就像启动程序时突出显示当前日期一样 在我的示例中 它是红色突出显示 我想要发生的是 当用户按下突出显示的日期时 数据库中日期旁边的文本将显示在日历下方的标签上 这是我使用 QT De
  • nvarchar 值“3001822585”的转换溢出了 int 列

    我使用以下方法将 Excel 文件导入到 SQL Server Excel 文件将所有值作为字符串 我可以导入文件 除了Barcode SalePrice and Price2 我收到错误 nvarchar 值 3001822585 条形码
  • 私人聊天系统MYSQL查询显示发送者/接收者的最后一条消息

    在这里我延伸一下我之前的问题 私人聊天系统MYSQL查询ORDERBY和GROUPBY https stackoverflow com questions 10929366 private chat system mysql query o
  • 如何使用 SQL 通过表示多级订单的 varchar 字段正确排序?

    我不太喜欢数据库 我发现在查询上出现以下问题SQL服务器数据库旧的遗留应用程序的 我声明不幸的是我无法更改数据库结构 字段类型 这非常难看 我有以下情况 SELECT Sottocategoria IdSottocategoria IdCa
  • SQL UPDATE 语句根据另一个现有行更新列

    基本上我有一个与下表具有相似格式的表格 我想做的是根据这个逻辑更新 Col4 如果 Col2 为空 则用 Col3 更新 Col4 如果 Col2 不为 null 则在 Col1 中查找与 Col2 中的值匹配的值 使用 col3 中的相应
  • Magento --“SQLSTATE[23000]:违反完整性约束..”客户更新

    迁移服务器后 每次尝试更新客户信息时都会出现错误 我正在使用一个客户激活插件 http www magentocommerce com magento connect vinai extension 489 customer activat
  • ASP SQL Server 连接

  • 在 Mysql 上使用 EntityManager JPA 运行脚本

    我正在尝试运行脚本 sql 文件 但由于我尝试了多种方法 因此出现多个错误 这是我的主要 sql 脚本 INSERT INTO Unity VALUES 11 paq 0 2013 04 15 11 41 37 Admin Paquete
  • 如何连续添加起始行和下一行的值

    我只想创建一个 sql 查询 结果就像图片上的那样 类似于 SQL 中的斐波那契数列 Ex Column 1 10 则 Result 列的值为 Result 10 因为这是第一行 然后假设column1第二行的值为50 那么Result第二
  • java库维护数据库结构

    我的应用程序一直在开发 所以偶尔 当版本升级时 需要创建 更改 删除一些表 修改一些数据等 通常需要执行一些sql代码 是否有一个 Java 库可用于使我的数据库结构保持最新 通过分析类似 db structure version 信息并执
  • 标量子查询包含多行

    我正在使用 H2 数据库并想要移动一些数据 为此 我创建了以下查询 UPDATE CUSTOMER SET EMAIL SELECT service EMAIL FROM CUSTOMER SERVICE AS service INNER
  • postgresql:插入...(选择*...)

    我不确定它是否是标准 SQL INSERT INTO tblA SELECT id time FROM tblB WHERE time gt 1000 我正在寻找的是 如果 tblA 和 tblB 位于不同的数据库服务器中怎么办 Postg
  • 将两个表合并为一个输出

    假设我有两张表 已知营业时间 ChargeNum CategoryID Month Hours 111111 1 2 1 09 10 111111 1 3 1 09 30 111111 1 4 1 09 50 222222 1 3 1 09
  • 获取在任何日期创建的表的列表?

    我遇到了这样的情况 我想查找我在 2012 年 9 月 14 日 2012 年 9 月 14 日 在 sql server 上创建的表 是否有任何查询会列出在此日期创建的这些表 SELECT FROM sys tables WHERE cr
  • 时间序列数据的自连接

    我需要一些帮助来完成我认为应该是相当简单的自连接查询 只需要将两条记录中匹配的开始时间和结束时间合并为一条记录 假设我的表中有以下内容 Time Event 08 00 Start 09 00 Stop 10 30 Start 10 45
  • 使用来自另一个数据库的选择查询更新 mysql 表

    我有两个数据库 我想用另一个数据库表中的值更新一个表 我正在使用以下查询 但它不起作用 UPDATE database1 table1 SET field2 database2 table1 field2 WHERE database1 t
  • 插入记录后如何从SQL Server获取Identity值

    我在数据库中添加一条记录identity价值 我想在插入后获取身份值 我不想通过存储过程来做到这一点 这是我的代码 SQLString INSERT INTO myTable SQLString Cal1 Cal2 Cal3 Cal4 SQ
  • 获取mysql中逗号分隔行中不同值的计数

    一个表 Jobs 有 2 列 JobId 城市 当我们保存工作时 工作位置可能是多个城市 如下所示 JobId City 1 New York 2 New York Ohio Virginia 3 New York Virginia 我如何

随机推荐

  • 为什么二进制序列化要求将对象标记为可序列化?

    我正在使用 xml 序列化程序 但是当我切换到二进制序列化时 它会抛出异常 运行时错误 dotNet 运行时异常 程序集 MyTypes Version 1 0 0 0 Culture neutral PublicKeyToken null
  • 为什么显式调用基移动构造函数实际上调用基复制构造函数? [复制]

    这个问题在这里已经有答案了 我试图通过派生类 move ctor 显式调用基类 move ctor 但是 惊喜 这实际上调用基类复制构造函数而不是基类移动构造函数 我在用着std move 对象上的函数以确保派生的移动向量被调用 代码 cl
  • 使用 RxJava、Retrofit 上传进度

    在我的项目中 我使用 MVP 设计模式 RxJava RxAndroid 和 Retrofit 来使用 API 调用 目前 我正在寻找在发送图片时尝试显示上传进度的解决方案 我已经看到了几种可能的实现 但恐怕它们不适合我的实现 以下是我如何
  • 从WebWorker同步获取数据?

    虽然我知道 JavaScript 本质上是单线程的 并且通常不赞成这样的事情 但我想知道是否有任何方法可以让 WebWorker 等待 直到主线程提供一些数据 而不破坏 WebWorker 的调用堆栈 由于这是一个有趣的项目 我可以使用新技
  • 创建文本行,'\n'.join(my_list) 缺少尾随换行符

    我想将 N 个字符串连接在一起 每个项目一行 my list one two three lines n join my list 不幸的是 我需要在每行末尾添加一个换行符lines 在上面的解决方案中 最后一行缺少换行符 我使用Pytho
  • 如何定期更改背景图片?

    我想在一秒计时器上更改我的应用程序的背景图像 更改两个图像之间的背景 我知道如何在按下按钮时更改图像 但我很难找到计时器的代码 我应该做什么 Thanks 你可以使用View postDelayed Runanble r long dela
  • 使用 TestCafe 时如何与 Windows 桌面交互

    我需要使用 TestCafe 在 Electron 应用程序中执行操作 但我还需要在 Windows 桌面上执行操作 例如单击任务栏 启动其他应用程序 由于 TestCafe 只能与浏览器窗口中的内容进行交互 因此我尝试使用 Appium
  • Javascript 文件无法访问 jstl

    我的 jstl 代码位于一个 javascript 文件中 该文件包含在我的 jsp 页面中 我遇到的问题是 当我在 jsp 页面内的脚本中编写 jstl 代码时 它工作正常 但是当我在单独的js文件中编写相同的代码时 jstl代码根本不起
  • 如何使用 jQuery 从 dom 中删除空元素?

    WordPress 文字编辑器吐出空内容 p 像这样的标签 p p nbsp p 我想针对所有 p with nbsp 并删除它们 我相信我必须使用contains and remove功能 但我不确定这段代码是否会删除 p p 标签仅 n
  • 从匿名内部类中突破方法

    我有一个方法 void someMethod String someString final String testAgainst for int i 0 i lt testAgainst length i if someString eq
  • 手机上无法播放背景视频?

    我制作了一个登陆页面 视频在表单的背景下播放 它在桌面上运行良好 但我使用 Chrome 在我的 Android 设备上检查 背景视频无法在其上播放 谁能帮我解决这个问题 这是我的链接fiddle http jsfiddle net Jam
  • 如何从 MySQL 数据库获取“印地语”文本(印度本地语言)?

    我已将印地语数据存储在 MySQL 数据库中 请参阅下图 现在我想获取该数据并显示在我的 JSP 页面上 但是当我尝试在 java 代码中获取数据时 我将文本转换为以下格式 UID Test upgrade 1 UID 159 1 UID
  • 物体的点状后边缘

    在我的 Android 应用程序中 我需要显示一个 3D 对象 这没问题 但前边缘应该是实心的 后边缘应该是虚线的 我需要有像图片上这样的东西 如何使用 OpenGL ES 1 或 2 实现它 我尝试过蒂姆的想法 使用深度缓冲区 它有效 但
  • 如何在 Angular2 中使用 httpparamserializer

    我正在尝试在 Angular2 中使用 httpparamserializer 我用谷歌搜索了很多 但这些例子仅适用于 Angular1 如下所示 如何注入 httpParamSerializer 以在 templateUrl 中使用 ht
  • 如何检查数据库中是否存在视图?

    如果数据库中存在某个视图 我需要执行一些 SQL 代码 我将如何检查视图是否存在 编辑 正在使用的 DBMS 是 Microsoft SQL Server 对于 SQL 服务器 IF EXISTS select FROM sys views
  • 屏蔽帐号以仅查看 DevExpress GridViewDataColumn 中的最后 4 位数字

    我需要添加 Mask DisplayFormatString 以仅查看 DevExpress GridViewDataColumn 中的最后 4 位数字 举例来说 如果真实帐号是123456789 然后它应该显示为 6789 你能帮我解决这
  • 在 Ubuntu 上安装 Node.js

    我正在尝试安装 Node jsUbuntu 12 10 https en wikipedia org wiki Ubuntu version history Ubuntu 12 10 28Quantal Quetzal 29 Quantal
  • 来自 rake 任务的 render_to_string

    我想使用 Rake 任务来缓存我的站点地图 以便请求sitemap xml不会花很长时间 这是我到目前为止所拥有的 posts Post all sitemap render to string template gt sitemap si
  • svn 存储库显示非常大的大小

    我的一位办公室开发人员将视频上传到 svn 存储库 几天后 他删除了这些视频 但 svn 存储库仍然显示非常大的尺寸 我怎样才能减小 svn 存储库的大小 您的问题已在 Apache Subversion 常见问题解答中得到解答 如何从存储
  • EF core 3.1 无法运行复杂的原始 SQL 查询

    以下查询在 EF core 2 上运行良好 但在 EF core 3 上会抛出错误 我什至可以在 EF core 2 中的此查询之后添加一些包含 现在我已经放弃了 query just to have an Id var id Guid N