Мой контроллер проходит через список, который мне затем нужно перебрать и обновить каждую запись в списке в моей базе данных.Я использую 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 работать вообще.Кто-нибудь знает, что я здесь делаю не так?