我在更新SQLRepository中的記錄時遇到了一些麻煩,而且我不確定如何正確執行此操作,或者我只是以完全錯誤的方式來處理這些記錄。如何在ASP.NET MVC Repository中一次遍歷並更新多個記錄?
我有一個發票視圖,詢問用戶的客戶,開始日期和結束日期。一旦提交我的控制器,然後構建與條件匹配的所有作業的IList,並通過Ajax更新視圖以顯示列表。在相同的觀點,我有另一個領域,要求用戶確認這些工作可以開票。
我需要第二個按鈕,然後用發票數據將記錄添加到我的發票表中 - 這工作正常。我還需要做的是更新所有工作記錄(在IList中)以包含發票ID號。我似乎無法得到這個工作。
第二個按鈕的更新方法如下。我已經嘗試了多次重新安排這個,沒有任何工作。說實話,在這種情況下我完全缺乏任何經驗(我不是天生的開發人員),所以我不確定我是否能夠接近這個標準。
public void SaveInvoice(Invoice invoice, IList<InvoiceJob> invoiceJobs)
{
foreach (var j in invoiceJobs)
{
InvoiceJob o = j;
InvoiceJob jobUpdate = (from i in invoiceJobTable where i.JobID == j.JobID select i).Single();
jobUpdate.InvoiceRef = invoice.InvoiceID.ToString();
invoiceJobTable.Attach(jobUpdate);
invoiceJobTable.Context.Refresh(RefreshMode.KeepCurrentValues, jobUpdate);
}
invoiceTable.InsertOnSubmit(invoice);
invoiceTable.Context.SubmitChanges();
invoiceJobTable.Context.SubmitChanges();
}
發票表更新精用這種方法和代碼運行,但InvoiceRef不更新在invoiceJobTable的作業。它似乎沒有觸及這一點。據我所知,invoiceJobs IList不爲null,就好像我改變了控制器發送的數據一樣,我在上面的foreach循環中得到了null異常錯誤。
我希望我已經解釋得很好。任何幫助表示讚賞;我只是一個試圖學習的小菜鳥。 xD
您對數據訪問使用什麼? LINQ2SQL? – Josh 2011-03-31 20:37:05
爲什麼要重新附加jobUpdate並刷新它? L2S應該保持jobUpdate.InvoiceRef的變化並在SubmitChanges上提交更改(假設你使用的是L2S)。 – Joe 2011-03-31 20:54:56
是的,Linq 2 Sql是什麼使用。 – aMike 2011-03-31 20:56:15