如何在继续foreach循环之前等待数据库命令完成一次迭代

时间:2015-06-04 14:48:25

标签: c# tsql foreach

我想知道如何在为每个循环进行下一次迭代之前等待数据库命令完成。

以下代码几乎一起发送所有SQL语句“EXEC ups_StoredProc”,而不等待下一个完成:

foreach (var guid in anUserIDList)
            {
                Database.ExecuteCmd(string.Format("EXEC dbo.usp_StoredProc @MemberContactID = '{0}'", guid), con);
            }

我试图在变量中获取存储过程的结果,但即使命令尚未完成,它也会返回0.

int result =  Database.ExecuteCmd(string.Format("EXEC dbo.usp_StoredProc @MemberContactID = '{0}'", guid), con);

谢谢

1 个答案:

答案 0 :(得分:0)

您必须查看该电话的文档。

根据您的评论,我看到方法签名是:

public static int ExecuteCmd(string SQLCommand, IDbConnection con, params DBParam[] Params);

根据我的经验,我会猜测这是已经一个阻塞调用,并且它会返回受影响的行数。如果是这样的话,那么你应该有所作为。

是什么让您认为存储过程应该返回0以外的任何内容?你确定它有效吗?

如果按照你的建议,这是一个非阻塞的电话,你可能无能为力。除非返回的整数引用某些可连接的任务,否则它可能“丢失”。不过,那将是一个糟糕的设计决定,所以我确实对此表示怀疑。