实体加载方式:
- Lazy Loading 延迟加载;
使用的是动态代理,默认情况下, 如果POCO类满足以下两个条件,EF就使用Lazy Loading ,关闭可使用Configuration.LazyLoadingEnabled = true;
:
- POCO类是
Public
且不为Sealed
。 - 导航属性标记为
Virtual
。
- Eager Loading 贪婪加载
不
设置导航属性为virtual
,并且对导航属性使用Include
,Eager Loading使用Include方法关联预先加载的实体。
SqliteDbContext.Instance.DevLock.Include("属性名称")
- Explicit Loading 显示加载, 延迟加载;
显示加载:不设置导航属性为virtual,并且对导航属性使用Reference(单个对象).Load()或Collection(对象集).Load()。Explicit Loading使用Entry方法,对于集合使用Collection,单个实体则使用Reference。