我在我的項目中使用 Entity Framework Core。我的實體看起來像這樣:[Table("Policy")]public class Policy{ [Key] public Guid Id { get; set; } public Bank Bank { get; set; } public string LastUpdateBy { get; set; } }[Table("Bank")]public class Bank{ [Key] public Guid Id { get; set; } public string Code { get; set; } public DateTime? CreateTs { get; set; } }在 SQL 中,表如下所示Policy:Id (uniqueidentifier)Bank (varchar)LastUpdateBy (varchar)我Bank在Policy實體中引用是因為我想建立父子關系。當我嘗試在Policy表中添加記錄時,出現以下錯誤違反主鍵約束“PK_Bank”。無法在對象“dbo.Bank”中插入重復的鍵。重復的鍵值為 (829e0798-c7ee-4fcf-b18d-0fbc60f63fad)。這是我的代碼:var policy = new Policy{ Bank = new Bank { Id = "829e0798-c7ee-4fcf-b18d-0fbc60f63fad" }, Id = Guid.NewGuid(), LastUpdateBy = "User"};dbContext.Policy.Add(policy);dbContext.SaveChanges();我知道,它也試圖在表中添加一條記錄Bank。我如何告訴 EF Core 僅在表中插入記錄Policy?
2 回答

紅顏莎娜
TA貢獻1842條經驗 獲得超13個贊
銀行是一個按規定存在的實體(單一),銀行不會改變,它的屬性是它自己的。保單由銀行發行,因此,保單應通過銀行 Guid 或 ID 屬性(外鍵)引用銀行,這將創建您想要的父 -> 子關系。這是一種ONE-TO-MANY
關系。我認為您可能想要花更多時間學習數據庫關系設計,或者在創建實體類之前將這些內容繪制在紙上。
編輯:伊戈爾給了你一個選擇,堅持到底,不改變你的實體,但我認為你應該認真考慮以反映數據庫關系設計的方式構建你的實體。只是我的觀點。

收到一只叮咚
TA貢獻1821條經驗 獲得超5個贊
如果您不想引入外鍵,Bank則必須先附加銀行。
var bank = new Bank
{
Id = "829e0798-c7ee-4fcf-b18d-0fbc60f63fad"
};
dbContext.Bank.Attach(bank);
var policy = new Policy
{
Bank = bank,
Id = Guid.NewGuid(),
LastUpdateBy = "User"
};
dbContext.Policy.Add(policy);
dbContext.SaveChanges();
- 2 回答
- 0 關注
- 146 瀏覽
添加回答
舉報
0/150
提交
取消