第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

為什么我們需要聲明一個屬性才能放置同名的外鍵屬性?

為什么我們需要聲明一個屬性才能放置同名的外鍵屬性?

C#
冉冉說 2022-07-23 09:00:51
如果我必須在引用導(dǎo)航屬性上聲明一個外鍵名稱,為什么我們需要創(chuàng)建一個原始類型,即 User_ID?例如    public class Sims    {        public int ID { get; set; }        public int Users_ID { get; set; }        [ForeignKey("Users_ID")]        public Users Users { get; set; }    }為什么我需要public int Users_ID { get; set; }在Users上只放置一個外鍵屬性?
查看完整描述

2 回答

?
智慧大石

TA貢獻1946條經(jīng)驗 獲得超3個贊

因為這告訴 EF 用于存儲鏈接的“用戶”記錄的 id 的外鍵字段名為“Users_ID”。

如果您沒有明確需要在您的Sims實體中提供該字段,那么您可以完全忽略它并且您根本不需要擁有 ForeignKey 屬性 & EF 將在幕后為您管理它。


或者,您可以將外鍵字段命名為“UsersId”,由于約定,它將假定這是外鍵。


所以這些中的任何一個都應(yīng)該完全沒問題:


//no explicit foreign key

public class Sims

{

    public int ID { get; set; }

    public Users Users { get; set; }

}


//explicit foreign key but EF works it out via convention

public class Sims

{

    public int ID { get; set; }

    public int UsersId { get; set; }

    public Users Users { get; set; }

}


//explicitly named foreign key which is named differently from 

//convention so needs to be pointed at.  note nameof() operator

//which will give a compiler error should you rename it, so is

//better than a magic string

public class Sims

{

    public int ID { get; set; }


    [ForeignKey(nameof(Users))]

    public int MyUsersFkField { get; set; }        

    public Users Users { get; set; }

}

您還可以將屬性添加到Users屬性并將其指向 Id 字段。


一個重要的注意事項是,如果您使用非常規(guī)命名的 FK 屬性并且根本不指定外鍵,那么 EF 將UsersId在基礎(chǔ)數(shù)據(jù)庫中創(chuàng)建一個 FK 字段并使用它(但這不會在您的模型)


查看完整回答
反對 回復(fù) 2022-07-23
?
呼如林

TA貢獻1798條經(jīng)驗 獲得超3個贊

[ForeignKey]屬性會覆蓋外鍵的默認約定。它允許我們在其名稱與主體實體的主鍵屬性不匹配的依賴實體中指定外鍵屬性。

在您的情況下,這將在 Sims 表中創(chuàng)建名為 Users_ID 的外鍵列,從而防止在數(shù)據(jù)庫中生成 ID 列。


查看完整回答
反對 回復(fù) 2022-07-23
  • 2 回答
  • 0 關(guān)注
  • 108 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號