繁体   English   中英

实体A包含实体B,我如何在不插入B的情况下更新A(因为它已经存在)EF核心

[英]Entity A contains Entity B, how do I Update A without inserting B (cause it already exists) EF core

所以我使用的是 EF Core 5.0.1,我有这个实体 A,它包含对另一个实体 B 的引用。

我想从 A 更新一个条目,因此它开始引用现有的 B,但是每当我尝试时,EF 核心都会尝试创建 B 的这个条目,就好像它是一个新条目一样,从而导致错误(重复的 Id)。 是否可以让 EF 将此引用添加到现有 B?

实体 A:

public class Customer
{
    public string JdeNumber { get; set; }
    public string ResponsibleUnit { get; set; }
    public string Email { get; set; }
    public User RegionalManager { get; set; }
}

实体 B:

public class User
{
    public string Code { get; set; }
    public string Name { get; set; }
    public string Email { get; set; }
    public Group UserGroup { get; set; }
}

如果不查看您的Update实施,就无法提出确切的答案。 但我认为你可以使用 DBContext 做这样的事情而不更新RegionalManager

var customer = context.Customers.First(a => a.JdeNumber == "number_of_existing_customer");
customer.ResponsibleUnit = "Test Unit";
customer.Email = "email@example.com";
context.SaveChanges();

更多更新实体的方法可以在这里找到。

我认为发生这种情况是因为您的两个 User 类之间没有任何关系。 因此,通过在 Customer class 中添加 UserId,在 Customer 和 User 实体类之间建立关系。 此外,应通过模型构建器添加适当的外键。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM