我们将实体框架更新到 6.1.3,从那时起,在某些服务器上(不幸的是运行单元测试的服务器),我们现在得到了异常:
System.Data.SqlClient.SqlException:
SQL 语句的某些部分嵌套得太深。重写查询或将其分解为更小的查询。
在一些嵌套不是那么深的 EF 查询上。
当我们更改 EF 版本时,我们进行了其他更改,但这些更改似乎都没有影响单元测试。使用这些查询的服务根本没有改变。
我在环境中没有找到此异常的任何条件,我有点不敢相信它是因为 EF 更新而发生的。是否还有其他影响可能导致此异常?
编辑:我刚刚提取了查询并在其中一台出现故障的服务器上运行它,该服务器运行得非常有趣。所以我想应该是EF吧?
SQL 语句的某些部分嵌套得太深。重写查询或将其分解为更小的查询。
此错误消息是由生成的SQL服务器。它表示一个 SQL 查询
无法分析,因为太复杂了。新版本的实体框架您使用的优化器可能会生成比以前更多的嵌套 SQL 查询,这就是您现在收到此错误消息的原因。
此错误消息也可能发生在某些版本的 SQL Server 上。如果您的 SQL Server 没有相同的版本,则可以解释为什么您仅在某些配置上重现它。您可以在此连接错误中找到有关此行为的更多信息:SQL语句嵌套太深 https://connect.microsoft.com/SQLServer/feedback/details/805659/sql-statement-is-nested-too-deeply
此问题已修复SQL Server 2012 SP2 https://support.microsoft.com/en-us/kb/2958429 and SQL Server 2014 SP1 https://support.microsoft.com/en-us/kb/3058865
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)