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表
Model表
上下文類
2.使用Fluent API模式,這種方式,是自動DBFirst自動生成實體層的預設方式
上下文類:
三、使用Include 擷取關聯表資料執行個體
注 :使用Include 方式擷取的資料為對應類型的對象,而不是動态類型Dynamic_xxxx