簡體   English   中英

如何在EF中更新相關實體(代碼優先)

[英]How to update related entities in EF (code first)

在我的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;

但這不起作用。

我想出了解決方案。

在控制器中:

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")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM