我正在使用一个函数,使用类型化数据集和adaptermanager.UpdateAll
从我的数据库的9个表中删除所有数据。
更新因{1}}而失败,因为有一个表
抛出DBConcurrencyException
。
我正在做的就是填写所有表格,然后删除行。没有其他进程在数据库上工作。这行如何分离?
有没有办法获得产生问题的行的主键?
我的代码(缩短):
RowNotInTableException
- 编辑 -
我测试了adapterManager之外的删除操作。所以我分别调用了每个--- 6 other fills before
FillDataTable("parameters");
List<AzureDataSet.parametersRow> parRows = (from p in azureDataSet.parameters where p.ID != "undefined" select p).ToList();
foreach (AzureDataSet.parametersRow item in parRows)
item.Delete();
FillDataTable("definitions");
List<AzureDataSet.definitionsRow> defRows = (from sd in azureDataSet.definitions where sd.hashPK != "undefined" select sd).ToList();
foreach (AzureDataSet.definitionsRow item in defRows)
item.Delete();
--- definitions table produces the error, there is only one more table to fill left
AzureDataSetTableAdapters.TableAdapterManager adapterManager = new AzureDataSetTableAdapters.TableAdapterManager();
adapterManager.parametersTableAdapter = new AzureDataSetTableAdapters.parametersTableAdapter();
adapterManager.definitionsTableAdapter = new AzureDataSetTableAdapters.definitionsTableAdapter();
adapterManager.BackupDataSetBeforeUpdate = true;
retryPolicy.ExecuteAction(() =>
{
adapterManager.UpdateAll(azureDataSet);
});
方法。
同一个表抛出错误:
StackTrace:
TableAdapter.Update
- 编辑2:已解决 -
我可以解决我的问题,但我不知道是什么导致了这个问题。我所做的就是打开我的DataSet.xsd,打开表的delete命令并再次保存DataSet。我一无所获!
答案 0 :(得分:0)
我可以解决我的问题,但我不知道为什么会抛出错误。
我所做的只是:
打开DataSet.xsd
打开表删除命令
再次保存DataSet。
我没有改变任何其他事情!