场景:
今天发现有一个查询很慢,根据Id对单条数据进行查询要300ms,这个完全是不正常的。然后断点进去看,发现,居然把里面所有的 virtual ICollection 的所有数据(这条数据大概有5个virtual ICollection 字段)都加载了。
问题:
之前,很多的文章都说, virtual ICollection<T> 就可以实现延迟加载,那么为什么这里会加载所有的数据出来。
查完一些资料后,我做了以下实验:
准备工作:创建一个控制台应用程序;通过Nuget安装EF6,VS2015
创建Model,UserInfo以及DepartmentInfo ,DepartmentInfo 跟UserInfo是一对多的关系。
代码如下:
DepartmentInfo