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

问题描述

所以我使用的是 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; }
}

标签: c#entity-framework.net-coreentity-framework-core

解决方案


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();

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


推荐阅读