2011-03-31 51 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

回答