【发布时间】:2011-04-01 18:22:41
【问题描述】:
我的控制器正在传递一个列表,然后我需要循环并更新数据库中列表中的每条记录。我正在使用 ASP.NET MVC 和使用 Linq to Sql 的存储库模式。下面的代码是我的保存方法,它需要将记录添加到发票表中,然后从数据库中更新作业表中的适用作业。
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 绝对不为空。如果我通过删除 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 循环工作。有谁知道我在这里做错了什么?
【问题讨论】:
-
null列表和空列表是非常不同的东西。您确定您的列表中有项目 (.Count > 0)?
标签: c# asp.net-mvc foreach