場(chǎng)景:
今天發(fā)現(xiàn)有一個(gè)查詢很慢,根據(jù)Id對(duì)單條數(shù)據(jù)進(jìn)行查詢要300ms,這個(gè)完全是不正常的。然后斷點(diǎn)進(jìn)去看,發(fā)現(xiàn),居然把里面所有的 virtual ICollection 的所有數(shù)據(jù)(這條數(shù)據(jù)大概有5個(gè)virtual ICollection 字段)都加載了。
問題:
之前,很多的文章都說, virtual ICollection<T> 就可以實(shí)現(xiàn)延遲加載,那么為什么這里會(huì)加載所有的數(shù)據(jù)出來。
查完一些資料后,我做了以下實(shí)驗(yàn):
準(zhǔn)備工作:創(chuàng)建一個(gè)控制臺(tái)應(yīng)用程序;通過Nuget安裝EF6,VS2015
創(chuàng)建Model,UserInfo以及DepartmentInfo ,DepartmentInfo 跟UserInfo是一對(duì)多的關(guān)系。
代碼如下:
DepartmentInfo