C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了c#linq生成超过限制的查询长度.我们有什么方法可以解除这个限制吗?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
嗨,我正在构建@L_841_0@mVC 4报告,并使用EF5.数据库sql 2005上.

该报告有大量长字符串过滤器,当选择了很多字符串过滤器时,我收到了这样的错误:“sql语句的某些部分嵌套太深.重写查询或将其分解为较小的查询.”

选择过滤器并返回List,在LINQ查询中我使用:

DataContext.Entity.Where(list.Contains(column));
return IQueryable<Entity>;

我想这是LINQ生成SQL查询超过了限制,我不知道限制是什么.

我们有什么方法可以控制这个限制吗?或者请指出我的猜测是否错误.

非常感谢.

感谢@AdrianFaciu提供的以下链接,这真的很有帮助,我认为这是类似的问题. (我猜我的每个字符串过滤器的长度太长了,而且它们中有很多.)
Hitting the 2100 parameter limit (SQL Server) when using Contains()

我已经阅读了一些解决方法,但仍在寻找合适的解决方案,而不是通过生成字符串查询.至少目前看来,我必须逐步加载数据以减少查询的长度.

解决方法

正确的解决方案是直接使用sql. EF和Linq不是编写报表查询的工具.它是ORM – 您使用它来从数据库获取对象,也可以修改它们并将它们存储回数据库.

如果您需要复杂的查询只是为了从数据库提取数据来构建报告或某个复杂的搜索引擎,您应该简单地传递ORM的复杂性并转到低级sql – 如果您达到了查询或参数的大小限制,那么您真的需要它.它将使您的查询更简单,更小,更快,并允许您使用一些高级功能,如表值参数,以避免大包含调用.

将所有报告从SProcs更改为Linq真的很愚蠢…你浪费时间制作更糟糕的解决方案.

大佬总结

以上是大佬教程为你收集整理的c#linq生成超过限制的查询长度.我们有什么方法可以解除这个限制吗?全部内容,希望文章能够帮你解决c#linq生成超过限制的查询长度.我们有什么方法可以解除这个限制吗?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。