代码之家  ›  专栏  ›  技术社区  ›  cdonner

System.Data.Linq.ChangeConflictException:未找到或更改行

  •  1
  • cdonner  · 技术社区  · 15 年前

    我在这件事上浪费了一天中的大部分时间,而且我对这个问题的理解也比不上今天早上的我。

    我正在循环访问一组对象,并将它们标记为删除。第二个总是导致上述异常。tb_发票有FK到tb_装运。

    和往常一样,我可能遗漏了一些非常明显的东西,但是我已经从代码中剥离了太多内容,以至于没有剩余的内容,而且我仍然得到这个异常。这是一个本地的SQL 2008实例,当然在读取发票和调用SubmitChanges()之间没有任何更改,也没有人更改发票。救命!

    myDataContext db = new myDataContext(); 
    
    IQueryable<invoiceDetail> pendingInvoices  
       = db.GetInvoiceDetailPending(); 
    
    foreach (invoiceDetail id in pendingInvoices) { 
        tb_shipment s = db.GetShipmentById((Guid)id.shipment_id); 
    
        db.tb_invoices.DeleteOnSubmit(
              db.GetInvoiceById(s.tb_invoices.FirstOrDefault().id));        } 
    
        SubmitChanges();    // fails for the 2nd invoice 
    } 
    
    1 回复  |  直到 15 年前
        1
  •  0
  •   Community CDub    7 年前

    System.Data.Linq.ChangeConflictException: Row not found or changed

    将SQL Server中的外键的删除操作设置为“层叠”也是如此。我真希望我早点记得我以前碰到过这个。