【问题标题】:How to update related entities in EF (code first)如何更新EF中的相关实体(代码优先)
【发布时间】:2014-04-25 09:41:41
【问题描述】:

在我的 ASP.NET MVC 应用程序中,我使用单一视图来编辑实体和一些相关数据。当我将模型传递给控制器​​并将适当的实体标记为已修改时,相关实体不会在我的数据库中更新。这是我的代码(简化版):

型号:

class A
{
    public int ID { get; set; }
    public B SomeProperty { get; set; }
    public string AnotherProperty { get; set; }

    public A()
    {
        SomeProperty = new B();
    }
}

class B
{
    public int ID { get; set; }
    public string SomePropertyInClassB { get; set; }
}

控制器方法:

public ActionResult Edit(A a)
{
    if(ModelState.IsValid)
    {
        var aEntity = _context.Entry(a);
        aEntity.State = EntityState.Modified;
        _context.SaveChanges();
    }
}

“AnotherProperty”已更新,但“SomePropertyInClassB”未更新。我尝试将以下代码添加到上述方法中:

var b = aEntity.Reference(a => a.SomeProperty).CurrentValue;
var bEntity = _context.Entry(b);
bEntity.State = EntityState.Modified;

但它不起作用。

【问题讨论】:

    标签: c# asp.net asp.net-mvc entity-framework ef-code-first


    【解决方案1】:

    我想出了解决方案。

    在控制器中:

    public ActionResult Edit(A a)
    {
        if(ModelState.IsValid)
        {
            _context.Entry(a).State = EntityState.Modified;
            _context.Entry(a.SomeProperty ).State = EntityState.Modified;
            _context.SaveChanges();
        }
    }
    

    ...而且,在我看来,对我来说不是那么明显:

    @Html.Hidden("SomeProperty.ID")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-05-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多