1

我调用了一个存储过程,它基本上是一个 INSERT 存储过程。它插入表 A,然后以表 A 的身份插入表 B。

现在,我需要从我的应用程序代码中调用这个存储过程 N 次。

有什么办法可以批量处理吗?目前它正在对数据库进行 N 次往返,我希望它是一次。

我能想到的唯一方法是通过用户定义的表类型通过网络传递整个项目列表。

但是这种方法的问题是我需要在存储过程中使用一个 CURSOR 来遍历每个项目以进行插入(因为标识字段)。

DbCommand.ExecuteNonQuery()基本上,我们可以使用 EF 4.2进行批处理吗?

或者我们可以用 Dapper 之类的东西来做到这一点吗?

4

1 回答 1

0

您可以保持这种状态,并且在存储过程中只需MERGE在目标表和表参数之间进行操作。因为你总是带着新记录来,所以MERGE只会在INSERT分支上输入。

在这种情况下,MERGE像这样使用是一种在没有游标的情况下进行批量插入的简单方法。

此外,另一种避免使用游标的方法是INSERT from SELECT在 SP 中使用语句。

于 2012-06-27T05:29:39.877 回答