一:立即加载,延迟加载,显式加载
1. 立即加载
Student Domain
{
Teacher theacher
}
using (SchoolDBEntities db = new SchoolDBEntities())
{
db.Database.Log = Console.WriteLine;
db.Configuration.LazyLoadingEnabled = false;
var item = db.Students.Include("Courses").Include("StudentAddress").ToList();
}
StudentAddress Domain
当我获取Student的时候,StudentAddress是否已经加载出来????
立即加载:
有什么好处:如果一次性加载出来,可以后续从cache中读取。。。或者减少数据库的访问次数。。。。
延迟加载:增加了数据库的压力,,,只有你需要这条数据的时候我们才加载,如果数据量比较大。。。
Tree结构,树形菜单。。 【Tree】 client => server
默认情况下,我们就是延迟加载。。。
db.Configuration.LazyLoadingEnabled = false; 用来指定是否延迟加载。。。。
2. 如果关闭延迟加载??? 怎么显示加载。。。
using (SchoolDBEntities db = new SchoolDBEntities())
{
db.Database.Log = Console.WriteLine;
db.Configuration.LazyLoadingEnabled = false;
var item = db.Students.FirstOrDefault();
//现在已经关闭延迟加载了,如果手工让其加载???
db.Entry(item).Reference(s => s.StudentAddress).Load();
var address = item.StudentAddress;
}