子行の変更と追加を同時に行うと、いくつかの問題が発生します。私は答えのテクニックを使用しています:stackoverflow.com/questions/5557829 /...。
問題は次のコードにあります。
public void EditReport(tbl_inspection inspection)
{
foreach (var roll in inspection.tbl_inspection_roll)
{
container.tbl_inspection_roll.Attach(roll);
container.ObjectStateManager.ChangeObjectState(roll, (roll.id_inspection_roll == 0) ? EntityState.Added : EntityState.Modified);
}
container.SaveChanges();
}
更新する行は常に少なくとも 1 行あります。追加する行が1つある場合、問題なく動作します。問題は、同時に複数の行を追加しようとすると、よく知られているエラーが表示されることです:
同じキーを持つオブジェクトが ObjectStateManager に既に存在します。ObjectStateManager は、同じキーを持つ複数のオブジェクトを追跡できません。
ここで何かが欠けているように感じます...