更新相关表数据MVC 4

时间:2015-08-24 14:44:41

标签: asp.net-mvc entity-framework

我正在开发一个MVC 4应用程序,我想知道更新相关表格数据的最佳方法是什么。

我有两个彼此相关的表,一个外键......一对多的关系:

表:非农就业数据

ID

PayrollDate

CompanyId

IsProcessed

IsComplete

表:PayrollDocuments

ID

DocumentUrl

UserId

PayrollId (FK)

IsApproved

我有View,显示PayrollDocuments的{​​{1}},如下所示:

Payroll

for (int i = 0; i < Model.PayrollDocuments.Count; i++) { @Html.HiddenFor(model => Model.PayrollDocuments[i].ID) @Html.HiddenFor(model => Model.PayrollDocuments[i].DocumentUrl) @Html.HiddenFor(model => Model.PayrollDocuments[i].UserId) PayrollDocument pd = Model.PayrollDocuments[i]; <div class="editor-label"> @pd.User.FirstName @pd.User.LastName </div> <a href="@pd.DocumentUrl" target="_blank">@pd.DocumentUrl</a><br /> @Html.EditorFor(model => Model.PayrollDocuments[i].IsApproved) } 允许用户批准为特定View添加的PayrollDocuments。问题是传递Payroll对象以更新两个表只是更新Payroll表。

Payroll

我要做的是循环遍历// update payroll public Payroll UpdatePayroll(Payroll p) { try { Payroll _p = GetPayroll(p.ID); this.Entity.Entry(_p).CurrentValues.SetValues(p); this.Entity.SaveChanges(); return p; } catch (Exception ex) { throw ex; } } 列表并逐个更新它们。我很好奇这是否是正常做法。更新PayrollDocuments对象以将Payroll添加到数据库时,它可以正常工作。我无法理解为什么在不必遍历所有对象的情况下更新它无法正常工作。

1 个答案:

答案 0 :(得分:0)

您必须像处理Payroll对象一样手动执行此操作。只有这样,实体框架才知道如何处理PayrollDocuments。如果您在HTTP上下文中,则会从任何数据库存储库中断开Payroll对象。您必须将它们显式添加到存储库,并定义每个对象应采取的操作。