c# – 如何在Foreach循环中更新IList中的记录?
发布时间:2020-12-15 21:17:03 所属栏目:百科 来源:网络整理
导读:我的控制器正在通过一个列表,然后我需要循环并更新数据库中列表中的每个记录.我正在使用ASP.NET MVC和使用 Linq to Sql的存储库模式.下面的代码是我的save方法,它需要将记录添加到发票表中,然后从db更新作业表中的适用作业. public void SaveInvoice(Invoice
我的控制器正在通过一个列表,然后我需要循环并更新数据库中列表中的每个记录.我正在使用ASP.NET MVC和使用
Linq to Sql的存储库模式.下面的代码是我的save方法,它需要将记录添加到发票表中,然后从db更新作业表中的适用作业.
public void SaveInvoice(Invoice invoice,IList<InvoiceJob> invoiceJobs) { invoiceTable.InsertOnSubmit(invoice); invoiceTable.Context.SubmitChanges(); foreach (InvoiceJob j in invoiceJobs) { var jobUpdate = invoiceJobTable.Where(x => x.JobID == j.JobID).Single(); jobUpdate.InvoiceRef = invoice.InvoiceID.ToString(); invoiceJobTable.GetOriginalEntityState(jobUpdate); invoiceJobTable.Context.Refresh(RefreshMode.KeepCurrentValues,jobUpdate); invoiceJobTable.Context.SubmitChanges(); } } **我已将代码删除到问题区域. 此代码不起作用,并且没有更新作业记录,但发票表更新正常.不会抛出任何错误,invoiceJobs IList绝对不是null.如果我通过删除foreach循环并手动指定要更新哪个JobId来更改代码,它可以正常工作.以下作品: public void SaveInvoice(Invoice invoice,IList<InvoiceJob> invoiceJobs) { invoiceTable.InsertOnSubmit(invoice); invoiceTable.Context.SubmitChanges(); var jobUpdate = invoiceJobTable.Where(x => x.JobID == 10000).Single(); jobUpdate.InvoiceRef = invoice.InvoiceID.ToString(); invoiceJobTable.GetOriginalEntityState(jobUpdate); invoiceJobTable.Context.Refresh(RefreshMode.KeepCurrentValues,jobUpdate); invoiceJobTable.Context.SubmitChanges(); } 我根本无法让foreach循环工作.有谁知道我在这里做错了什么? 解决方法
看起来这个问题最常见的原因是invokeJobs集合是一个空集合.也就是说它没有元素,因此foreach循环实际上没有任何作用.
您可以通过在方法顶部添加以下内容来验证这一点(仅用于调试目的) if (invoiceJobs.Count == 0) { throw new ArgumentException("It's an empty list"); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |