2011-03-31 37 views
1

我在更新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

+1

您對數據訪問使用什麼? LINQ2SQL? – Josh 2011-03-31 20:37:05

+0

爲什麼要重新附加jobUpdate並刷新它? L2S應該保持jobUpdate.InvoiceRef的變化並在SubmitChanges上提交更改(假設你使用的是L2S)。 – Joe 2011-03-31 20:54:56

+0

是的,Linq 2 Sql是什麼使用。 – aMike 2011-03-31 20:56:15

回答

相關問題