gpt4 book ai didi

c# - 如何更新 EF 中的相关实体(代码优先)

转载 作者:太空宇宙 更新时间:2023-11-03 13:23:34 24 4
gpt4 key购买 nike

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

型号:

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; }
}

Controller 方法:

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;

但它不起作用。

最佳答案

我想到了解决方案。

在 Controller 中:

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

关于c# - 如何更新 EF 中的相关实体(代码优先),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23289503/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com