一。Load方法
- Load()方法可以对查询方法进行优化
- Load()方法实际得到的是一个proxy对象,并没立即查询数据库,只有对对象的属性进行访问时,才查询数据库。在NHibernate中,被称为Laze Loading(延迟加载)
- Load()方法得到的对象,如果对象不存在,访问对象的属性,会报异常
- 当需要使用实体对象,而又不需要访问对象属性时,宜使用Load()方法,如Delete
如下图,load()只加载了一个代理对象,并没有访问数据库
using (ITransaction rs = session.BeginTransaction()) { TplCustomer tplCustomer = new TplCustomer() { FirstName="孙悟空", LastName="KIng" }; //session.Save(tplCustomer); var model = session.Load<TplCustomer>(150228); session.Close(); }
当访问对象的属性,或Delete的时候,才会去查询数据库。
1 using (ITransaction rs = session.BeginTransaction()) 2 { 3 TplCustomer tplCustomer = new TplCustomer() 4 { 5 FirstName="孙悟空", 6 LastName="KIng" 7 }; 8 //session.Save(tplCustomer); 9 10 var model = session.Load<TplCustomer>(150228); 11 Console.WriteLine(model.FirstName);//访问load加载的对象属性,前提时对象不能为空,否在异常。 12 session.Close(); 13 }
二。get()方法
Get()方法,立即查询数据库,如果数据不存在,返回为空。