c#linq生成超过限制的查询长度.我们有什么方法可以解除这个限制吗?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c#linq生成超过限制的查询长度.我们有什么方法可以解除这个限制吗?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1226字,纯文字阅读大概需要2分钟。
内容图文
嗨,我正在构建一个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生成超过限制的查询长度.我们有什么方法可以解除这个限制吗?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。