亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Entity Framework Core 將記錄插入數據庫

Entity Framework Core 將記錄插入數據庫

C#
侃侃爾雅 2023-08-20 11:03:28
我在我的項目中使用 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關系。我認為您可能想要花更多時間學習數據庫關系設計,或者在創建實體類之前將這些內容繪制在紙上。

編輯:伊戈爾給了你一個選擇,堅持到底,不改變你的實體,但我認為你應該認真考慮以反映數據庫關系設計的方式構建你的實體。只是我的觀點。


查看完整回答
反對 回復 2023-08-20
?
收到一只叮咚

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


查看完整回答
反對 回復 2023-08-20
  • 2 回答
  • 0 關注
  • 146 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號