我们将实体框架更新到6.1.3,从那以后在某些服务器上(遗憾的是那些运行单元测试的服务器),我们现在得到例外:
System.Data.SqlClient.SqlException: SQL语句的某些部分嵌套得太深。重写查询或将其分解为较小的查询。
对于那些没有深层嵌套的EF查询。
当我们更改EF版本时,我们进行了其他更改,但这些都没有影响单元测试。使用这些查询的服务根本没有改变。
我没有在环境中找到此异常的任何条件,我有点不相信它会因为EF更新而发生。是否有更多可能导致此异常的影响?
编辑:我刚刚提取了查询并在其中一个失败的服务器上运行,这很有趣。所以我想它必须是EF?
答案 0 :(得分:5)
SQL语句的某些部分嵌套太深。重写查询或将其分解为较小的查询。
此错误消息由 SQL Server 生成。它表示一个SQL查询 无法分析,因为它太复杂了。您使用的新版 Entity Framework 可能有一个不同的优化器,它将生成比以前更多的嵌套SQL查询,这就是您现在有此错误消息的原因。
在某些版本的SQL Server上也可能出现此错误消息。如果您的SQL Server没有相同的版本,它可以解释为什么只在某些配置上重现它。您可以在此连接错误中找到有关此行为的更多信息:SQL statement is nested too deeply
修复