我在这件事上浪费了一天中的大部分时间,而且我对这个问题的理解也比不上今天早上的我。
我正在循环访问一组对象,并将它们标记为删除。第二个总是导致上述异常。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
}