DataAdapter在使用UpdateBatchSize时引发并发冲突异常

时间:2014-04-21 21:47:16

标签: c# ado.net

我正在使用DataAdapter并且我很好地更新了我的数据,但是当我使用UpdateBatchSize属性时,我得到了一个例外:"并发冲突:批量命令影响了预期的2条记录中的0条。&#34 ; ???
以下代码是我的DAL的一部分

myAdapter.InsertCommand = InsertCmd();
myAdapter.InsertCommand.UpdatedRowSource = System.Data.UpdateRowSource.None;
myAdapter.DeleteCommand = DeleteCmd();
myAdapter.DeleteCommand.UpdatedRowSource = System.Data.UpdateRowSource.None;
myAdapter.UpdateCommand = UpdateCmd();
myAdapter.UpdateCommand.UpdatedRowSource = System.Data.UpdateRowSource.None;

myAdapter.SelectCommand.Connection = myConnection.conn;
myAdapter.InsertCommand.Connection = myConnection.conn;
myAdapter.UpdateCommand.Connection = myConnection.conn;
myAdapter.DeleteCommand.Connection = myConnection.conn;

myAdapter.AcceptChangesDuringUpdate = false;
myAdapter.UpdateBatchSize = 2;

try
{
    myAdapter.Update(dt.GetChanges());
}
catch
{
    throw;
}

1 个答案:

答案 0 :(得分:0)

我在搜索后得到的结果是,您不能将Adapter UpdateBatchSize属性与SQL命令提供的optimitstic并发一起使用,由于时间戳列的大小或每列的并发检查,命令将失败,因此SQL命令会非常大,所以你无法获得所有东西。

如果您想使用UpdateBatchSize来最小化服务器行程,您必须在sqlcommand或SqlAdapter中提供的并发选项中删除timestamp列检查