首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更新相关表数据MVC 4

更新相关表数据MVC 4
EN

Stack Overflow用户
提问于 2015-08-24 14:44:41
回答 1查看 316关注 0票数 1

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

我有两张有外键的桌子.一对多的关系:

表:

代码语言:javascript
复制
ID

PayrollDate

CompanyId

IsProcessed

IsComplete

表: PayrollDocuments

代码语言:javascript
复制
ID

DocumentUrl

UserId

PayrollId (FK)

IsApproved

我有一个View,它显示PayrollPayrollDocuments,如下所示:

代码语言:javascript
复制
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使用户能够批准为特定Payroll添加的PayrollDocuments。问题是,传递薪资对象更新两个表只是更新Payroll表。

代码语言:javascript
复制
// 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对象以将PayrollDocument添加到数据库时,它不会遇到任何问题。我真的不明白为什么在没有遍历所有对象的情况下更新它就不能工作。

EN

回答 1

Stack Overflow用户

发布于 2015-08-24 16:50:26

您必须手动执行此操作,就像处理薪资对象时所做的那样。只有这样,实体框架才知道如何处理PayrollDocuments。如果您处于HTTP上下文中,则薪资对象将与任何数据库存储库断开连接。您必须显式地将它们添加到存储库中,并为每个对象定义应该采取的操作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32185177

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档