gpt4 book ai didi

c# - 如何更新 Entity Framework 中的相关实体

转载 作者:可可西里 更新时间:2023-11-01 08:27:39 26 4
gpt4 key购买 nike

我有一个 MVC 项目,使用 Entity Framework Code First 和 POCO 对象作为数据库。例如:

public class ClassA
{
public int? Id {get; set;}
public string Name { get; set;}
public virtual ClassB B {get; set;}
}

public class ClassB
{
public int? Id {get;set;}
public string Description {get;set;}
}

我有一个创建或编辑模型的 ActionResult。问题是当我调用此 ActionResult 来更新模型时,model.B 已更改,关系未保存在数据库中。当调用 ActionResult 以创建新对象时,它会按预期工作。我该如何解决这个问题?

public ActionResult Save(ClassA model)
{
model.B = GetBFromDb(model.B.Id.Value);

if(ModelState.IsValid)
{
if (id.HasValue)
{
context.Entry(model).State = System.Data.EntityState.Modified;
}
else
{
context.ClassAs.Add(model);
}
context.SaveChanges();
// redirect to index etc.
}
return View("EditForm", model);
}

最佳答案

我通过将带有外键的 ClassA 更改为 ClassB 并设置 BId 的值来解决它:

public class ClassA
{
public int? Id {get; set;}
public string Name { get; set;}
public int BId {get;set;} // foreign key to B
public virtual ClassB B {get; set;}
}

为什么这个外键属性而不是 EF 生成的外键来完成这项工作?

关于c# - 如何更新 Entity Framework 中的相关实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8431619/

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