Asp.net

ASP.NET MVC + Entity Framework中Include()的用途

  • August 4, 2018

在 Visual Studio 生成的控制器以及範例應用程序 (ContosoUniversity) 中,Index 操作始終具有類似

var departments = db.Departments.Include(d => d.Administrator);

那和有什麼區別

var departments = db.Departments;

首先,我懷疑第一個(包含)使視圖能夠檢索部門.管理員。但第二個(不包含)似乎也能做到這一點。

告訴實體框架工作在Include結果中急切地載入每個部門的管理員。在這種情況下,Entity Framework 可以使用 SQL 連接在單個請求中從兩個表中獲取數據。

程式碼在沒有包含的情況下仍然可以工作,但是當您第一次訪問部門管理員時,EF 將需要訪問數據庫來載入它(因為它沒有預載入)。按需載入數據(惰性)是一個不錯的功能,但它可能是一個嚴重的性能問題(稱為N+1問題)。特別是如果您正在訪問每個部門的管理員(例如,在一個循環中) - 而不是一個數據庫呼叫,您最終會得到很多!

引用自:https://stackoverflow.com/questions/7370555