Linq to sql 如何在ASP.NET MVC存储库中一次循环并更新多个记录?

Linq to sql 如何在ASP.NET MVC存储库中一次循环并更新多个记录?,linq-to-sql,Linq To Sql,我在更新SQLRepository中的记录时遇到了一些问题,我不知道如何正确地实现它,或者我只是以完全错误的方式实现了它 我有一个发票视图,要求用户提供客户、开始日期和结束日期。提交后,我的控制器将构建一个包含所有符合条件的作业的IList,视图将通过Ajax更新以显示列表。在同一视图中,我有另一个字段,它要求用户确认这些作业是否可以开票 我需要这个第二个按钮,然后添加一个记录到我的发票表和发票数据-这工作正常。我还需要做的是更新所有工作记录(在IList中),以包括发票ID号。我好像没法让它工

我在更新SQLRepository中的记录时遇到了一些问题,我不知道如何正确地实现它,或者我只是以完全错误的方式实现了它

我有一个发票视图,要求用户提供客户、开始日期和结束日期。提交后,我的控制器将构建一个包含所有符合条件的作业的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();

        }
公共作废保存发票(发票发票,IList invoiceJobs)
{
foreach(发票作业中的var j)
{
发票作业o=j;
InvoiceJob jobUpdate=(从invoiceJobTable中的i开始,其中i.JobID==j.JobID选择i);
jobUpdate.InvoiceRef=invoice.InvoiceID.ToString();
invoiceJobTable.Attach(作业更新);
invoiceJobTable.Context.Refresh(RefreshMode.KeepCurrentValues,jobUpdate);
}
可开票。InsertOnSubmit(发票);
invoiceTable.Context.SubmitChanges();
invoiceJobTable.Context.SubmitChanges();
}
使用此方法可以很好地更新发票表并运行代码,但不会为invoiceJobTable中的作业更新InvoiceRef。它好像没碰到这个。据我所知,invoiceJobs IList不是空的,就好像我在上面的foreach循环中更改了控制器通过I get null异常错误发送的数据一样


我希望我已经解释得足够清楚了。感谢您的帮助;我只是一个想学的书呆子。xD

看看这篇文章


您使用什么来访问数据?Linq2Sql?为什么要附加作业更新并刷新它?L2S应该保留jobUpdate.InvoiceRef中的更改,并在提交更改时提交更改(假设您使用的是L2S)。是的,使用的是Linq 2 Sql。