c# - 避免 LINQ to SQL 中的 2100 个参数限制

标签 c# .net linq linq-to-sql

在我目前正在进行的项目中,我需要通过以下方式访问 LINQ 中的 2 个数据库:

  1. 我从 DB1 获取指定日期范围内所有行程编号的列表,并将其存储为“长”值列表

  2. 我在 DB2 上执行大量连接的广泛查询,但只查看其行程编号包含在上述列表中的行程。

问题是,来自 DB1 的行程列表经常返回超过 2100 个项目——当然我在 SQL 中达到了 2100 个参数限制,这导致我的第二个查询失败。我一直在寻找解决方法,例如 here 中描述的,但这实际上将我的查询更改为 LINQ-to-Objects,这会导致我的连接出现很多问题

还有其他解决方法吗?

最佳答案

因为 LINQ-to-SQL 可以调用存储过程,所以您可以

  • 有一个存储过程,它将数组作为输入,然后将值放入临时表中以加入
  • 同样采用存储过程拆分的字符串

或者自己将所有值上传到临时表并加入该表。

但是也许你应该重新考虑这个问题:

  • 可以将 SQL Server 配置为允许查询其他数据库(包括 Oracle)中的表,如果允许,这可能是您的一个选项。
  • 您能否使用一些复制系统来更新 DB2 中的行程编号表?

关于c# - 避免 LINQ to SQL 中的 2100 个参数限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6122185/

相关文章:

c# - 选择的组合框项目待修复

c# - 如果您不控制所涉及的类型,您将如何将 "switch on Type"重构为多态?

.NET ZIP 库在内存中工作

c# - Stopped System.Timers.Timer 在设置 AutoReset 后开始触发 Elapsed 事件

LINQ 与 nHibernate

c# - 内联组合数组 - LINQ

c# - LINQ to SQL 转换溢出

具有接口(interface)类型约束的 C# 泛型方法

c# - .Net 中的多语言 Winform - 意见和建议

.net - PrivateFontCollection.AddMemoryFont 在 Windows Server 2012 R2 上产生随机错误