2014-04-25 23 views
2

在我的ASP.NET MVC應用程序中,我使用單個視圖來編輯實體和一些相關數據。當我將模型傳遞給控制器​​並將適當的實體標記爲已修改時,相關實體不會在我的數據庫中更新。這裏是我的代碼(簡體版):如何更新EF中的相關實體(代碼優先)

型號:

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; 

但它不起作用。

回答

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