c# – 从数据库中选择不在大型集合中的id,提供的参数太多

c# – 从数据库中选择不在大型集合中的id,提供的参数太多,第1张

概述我正在开发一个有两个数据库的应用程序. 我有一个对象,让我们称之为permit,它有一个id引用表的id列表,让我们在另一个数据库中调用那些任务. 我正在尝试运行以下查询: var listOfUsedIds = select taskid from Permit_Task;Select * from task where id not in (listOfUsedIds) 当我运行此代码时,我 我正在开发一个有两个数据库的应用程序.

我有一个对象,让我们称之为permit,它有一个ID引用表的ID列表,让我们在另一个数据库中调用那些任务.

我正在尝试运行以下查询:

var listofUsedIDs = select taskID from Permit_Task;Select * from task where ID not in (listofUsedIDs)

当我运行此代码时,我收到错误:

The incoming tabular data stream (TDS) remote procedure call (RPC)
protocol stream is incorrect.
Too many parameters were provIDed in this RPC request. The maximum
is 2100.

我无法运行子选择或任何事情因为NHibernate不允许我在两个数据库上执行此 *** 作.

任何人都可以帮我解决这个问题吗?

解决方法
using (var tx = session.BeginTransaction()){    session.Createsqlquery("CREATE TEMP table usedIDs (ID INT)").ExecuteUpdate();    for (int index = 0; index < IDs.Length; index++)    {        // Todo: batch this        session.Createsqlquery("INSERT INTO usedIDs VALUES (:p" + index + ")")            .SetParameter("p" + index,ID)            .ExecuteUpdate();    }    session.Createsqlquery("CREATE INDEX usedIDs_IDx ON usedIDs (ID)").ExecuteUpdate();    Batch batch;    while((batch.List = session.Createsqlquery("SELECT ID FROM tasks t WHERE 1 = (SELECT COUNT(*) FROM usedIDs u WHERE u.ID = t.ID) liMIT 10 OFFSET " + batch.Number).List<int>()).Count > 0)    {        var tasks = session.queryOver<Task>()            .Where(t => t.ID.IsIn(batch))            .List();        // Do something with the tasks    }    tx.Commit();}

要么

public TaskMap(){    Map(x => x.IsUsedCount).Formula("SELECT (SELECT COUNT(*) FROM usedIDs u WHERE u.ID = ID)").LazyLoad();}var tasks = session.queryOver<Task>()    .Where(t => t.IsUsedCount == 0)    .List();
总结

以上是内存溢出为你收集整理的c# – 从数据库中选择不在大型集合中的id,提供的参数太多全部内容,希望文章能够帮你解决c# – 从数据库中选择不在大型集合中的id,提供的参数太多所遇到的程序开发问题。

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

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/langs/1228355.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-05
下一篇2022-06-05

发表评论

登录后才能评论

评论列表(0条)

    保存