天天看點

.NetCore中EFCore的使用整理(二)-關聯表查詢

EF常用處理關聯加載的方式有3中:延遲加載(Lazy Loading)、貪婪加載 (Eager Loading)以及顯示加載。

一、EF Core  1.1

1.目前的版本,還不支援延遲加載(Lazy Loading),不将來是否支援

2.目前支援貪婪加載:使用Include加載 關聯表 的資料,這種方式 使用一條Join的 Sql語句進行查詢。

3. 貪婪加載的優勢在于僅執行1次SQL查詢即傳回所需要的結果。但使用JOIN查詢在資料庫記錄條數較多時,多條簡單的SQL查詢往往比一條複雜的JOIN查詢效率要好。

Include語句可以在 一次查詢中使用多次 :

4.限制加載的方式暫時忽略使用。

二、EF Core 中主外鍵設定

1.使用資料注釋,DataAnnotations模式,這種方式适合Code First或者說手寫實體類和自定義主外鍵 關聯。

Menu表

.NetCore中EFCore的使用整理(二)-關聯表查詢
.NetCore中EFCore的使用整理(二)-關聯表查詢

Model表

.NetCore中EFCore的使用整理(二)-關聯表查詢
.NetCore中EFCore的使用整理(二)-關聯表查詢
.NetCore中EFCore的使用整理(二)-關聯表查詢

上下文類

.NetCore中EFCore的使用整理(二)-關聯表查詢
.NetCore中EFCore的使用整理(二)-關聯表查詢
.NetCore中EFCore的使用整理(二)-關聯表查詢

2.使用Fluent API模式,這種方式,是自動DBFirst自動生成實體層的預設方式

.NetCore中EFCore的使用整理(二)-關聯表查詢
.NetCore中EFCore的使用整理(二)-關聯表查詢
.NetCore中EFCore的使用整理(二)-關聯表查詢
.NetCore中EFCore的使用整理(二)-關聯表查詢
.NetCore中EFCore的使用整理(二)-關聯表查詢
.NetCore中EFCore的使用整理(二)-關聯表查詢

上下文類:

.NetCore中EFCore的使用整理(二)-關聯表查詢
.NetCore中EFCore的使用整理(二)-關聯表查詢
.NetCore中EFCore的使用整理(二)-關聯表查詢

三、使用Include 擷取關聯表資料執行個體

注 :使用Include 方式擷取的資料為對應類型的對象,而不是動态類型Dynamic_xxxx

.NetCore中EFCore的使用整理(二)-關聯表查詢
.NetCore中EFCore的使用整理(二)-關聯表查詢
.NetCore中EFCore的使用整理(二)-關聯表查詢
.NetCore中EFCore的使用整理(二)-關聯表查詢
.NetCore中EFCore的使用整理(二)-關聯表查詢