【发布时间】:2011-09-15 08:26:17
【问题描述】:
我正在开发一个有两个数据库的应用程序。
我有一个对象,我们称之为permit,它有一个从表中引用id 的id 列表,我们在另一个数据库中称之为tasks。
我正在尝试运行以下查询:
var listOfUsedIds = select taskid from Permit_Task;
Select * from task where id not in (listOfUsedIds)
当我运行这段代码时,我得到了错误:
传入的表格数据流 (TDS) 远程过程调用 (RPC) 协议流不正确。
此 RPC 请求中提供的参数过多。最大值 是 2100。
我无法运行子选择或任何事情,因为 NHibernate 不允许我在两个数据库上执行此操作。
谁能帮我解决这个问题?
【问题讨论】:
-
你也可以检查一下:stackoverflow.com/questions/656167/…
-
消息很清楚:
**too many parameters** were provided。解决方法:使用less参数.... -
一种选择是先将 id 插入到临时表中。临时表通常存储在内存中,效率很高。
-
这不应该作为使用 contains 达到限制的查询的副本而关闭——使用 contains 客户端可以触发多个查询并简单地合并结果; not in 客户端操作变得更加复杂
-
@Davide Piras OP 声明
not in不包括我认为的批次
标签: c# sql-server nhibernate multiple-databases