EF的延迟加载LazyLoad

延迟加载只对关联属性(Navigation Property)有用,普通属性没有这个东西。数据库

延迟加载是一条一条的读取属性,调用一次,读取一次。服务器

条件:ide

context.Configuration.ProxyCreationEnabled = true;(默认为true)spa

context.Configuration.LazyLoadingEnabled = true;(默认为true)io

POCO类为public,导航属性要加virtual修饰符。原理

注:POCO---Plain Old CLR Object,指那些不包括INSERT、DEL等数据持久化操做及任何业务逻辑的原始类。数据

原理分析:di

EF动态的生成了实体类的子类,而后override了virtual属性(因此不加virtual的话就得不到属性值)vi

优势:避免一次性加载全部数据,提升了加载的速度。co

缺点:用一次加载一次,提升了数据库服务器的压力。

因此,当数据库的数据越多,咱们用到的数据越少时,推荐使用延迟加载,反之使用预先加载。

相关文章
相关标签/搜索