簡體   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