0

型指定されたデータセットと を使用して、データベースの 9 つのテーブルからすべてのデータを削除する関数を使用していますadaptermanager.UpdateAllDBConcurrencyException1 つのテーブルが をスローするため、更新は で失敗しますRowNotInTableException。私がやっているのは、すべてのテーブルを埋めてから行を削除することだけです。データベースで動作する他のプロセスはありません。行を分離するにはどうすればよいですか? 問題を引き起こしている行の主キーを取得する方法はありますか?

私のコード(短縮):

--- 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);
  });

- 編集 -

adapterManager の外で削除操作をテストしました。TableAdapter.Updateそのため、すべてのメソッドを個別に呼び出しました。同じテーブルで次のエラーがスローされます。

スタックトレース:

System.Data.DBConcurrencyException
bei System.Data.Common.DbDataAdapter.UpdatedRowStatusErrors(RowUpdatedEventArgs rowUpdatedEvent, BatchCommandInfo[] batchCommands, Int32 commandCount)
bei System.Data.Common.DbDataAdapter.UpdatedRowStatus(RowUpdatedEventArgs rowUpdatedEvent, BatchCommandInfo[] batchCommands, Int32 commandCount)
bei System.Data.Common.DbDataAdapter.Update(DataRow[] dataRows, DataTableMapping tableMapping)
bei System.Data.Common.DbDataAdapter.UpdateFromDataTable(DataTable dataTable, DataTableMapping tableMapping)
bei System.Data.Common.DbDataAdapter.Update(DataSet dataSet, String srcTable)
bei Apcs.Pcd.NetLib.AzureDataSetTableAdapters.definitionsTableAdapter.Update(AzureDataSet dataSet) in ..\AzureDataSet.Designer.cs:Zeile 21172.
bei ..DeleteAllDatabaseData() in ..:Zeile 2540.

-- 編集 2: 解決済み --

問題を解決できましたが、何が問題を引き起こしたのかわかりません。私がしたことは、DataSet.xsd を開いて、テーブルの削除コマンドを開いて、DataSet を再度保存することだけでした。私は何も変えなかった!

4

1 に答える 1