在我的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" ISN'吨。我尝试将以下代码添加到上述方法中:
var b = aEntity.Reference(a => a.SomeProperty).CurrentValue;
var bEntity = _context.Entry(b);
bEntity.State = EntityState.Modified;
但它没有用。
答案 0 :(得分: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")