在我目前正在进行的项目中,我需要通过以下方式访问 LINQ 中的 2 个数据库:
我从 DB1 获取指定日期范围内所有行程编号的列表,并将其存储为“长”值列表
我在 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/