6 EF Core 資料庫實體關係外來鍵的配置

2022-07-30 20:15:16 字數 2782 閱讀 8067

一、ef core 預設約定的導航屬性

1、如果兩個型別之間找到一對導航屬性,則它們將被配置為同一關係的反轉導航屬性。

public

class

blog

public

string url

public listposts}

public

class

post

public

string title

public

string content

public int blogid

public blog blog}

2.依賴實體(多端的實體)包含名稱與其中一種模式相匹配的屬性,則該屬性將被配置為外來鍵: 

a.依賴主體設定:導航屬性、外來鍵屬性(導航屬性名+主體主鍵名) 

public

class

blog

public

string url

}public

class

post

public

string title

public

string content

public int blogmodelblogid

public blog blogmodel

}

a.依賴主體設定:導航屬性、外來鍵屬性(導航屬性名+id) 

public

class

blog

public

string url

}public

class

post

public

string title

public

string content

public int blogmodelblogid

public blog blogmodel

}

c.依賴主體設定:導航屬性、外來鍵屬性(主體型別名+主體主鍵名)

public

class

blog

public

string url

}public

class

post

public

string title

public

string content

public int blogblogid

public blog blogmodel

}

d.依賴主體設定:導航屬性、外來鍵屬性(主體型別名+id)

public

class

blog

public

string url

}public

class

post

public

string title

public

string content

public

int blogid

public blog blogmodel

}

3.無外來鍵屬性:如果未找到外來鍵屬性,則會引入名稱為在此示例中,隱藏外來鍵是blogid

public

class

blog

public

string url

public listposts

}public

class

post

public

string title

public

string content

public blog blog}

4.只包含乙個導航屬性(無反向導航,沒有外來鍵屬性)就足以具有約定定義的關係。 還可以有乙個導航屬性和乙個外來鍵屬性

public

class

blog

public

string url

public listposts

}public

class

post

public

string title

public

string content

}

5.手動設定

a.資料註解方式

public

int blogforeignkey

[foreignkey(

"blogforeignkey

")] //設定外來鍵

public blog blog

b.fluent api 方式

odelbuilder.entity().hasone(p => p.blog).withmany(b =>b.posts).hasforeignkey(p => p.blogforeignkey);

資料庫實體關係

資料庫實體間有三種關聯關係 一對一,一對多,多對多。一對一例項 乙個學生只有個身份證編號。一對多例項 乙個班級有多個學生。多對多例項 多對多就是雙向一對多,乙個學生可以選擇多門課,一門課也有多名學生。一對一關係處理 我們需要建立學生表來存放學生的資訊 列屬性為下面 身份證 學生證年齡 名字一對多關係...

Efcore從資料庫快速生成實體及context

有些專案開發時先建立資料庫,再用codefirst來書寫entity和entityconfiguration,比較耗費功夫。1 在vs2019中新建個asp.net core的web專案,或者其他專案均可。2 開啟nuget管理器命令列。執行以下3條命令安裝相關功能。install package ...

efcore從資料庫快速生成實體及context

有些專案開發時先建立資料庫,再用codefirst來書寫entity和entityconfiguration,比較耗費功夫。1 在vs2017中新建個asp.net core的web專案,或者其他專案均可。2 開啟nuget管理器命令列。執行以下3條命令安裝相關功能。install package ...