C# 多列上的Nhibernate延迟加载
如果我使用NHiberante在多个属性列上设置LazyLoad,并逐个访问这些属性,它会为每个属性查询数据库吗?C# 多列上的Nhibernate延迟加载,c#,performance,nhibernate,fluent-nhibernate,lazy-loading,C#,Performance,Nhibernate,Fluent Nhibernate,Lazy Loading,如果我使用NHiberante在多个属性列上设置LazyLoad,并逐个访问这些属性,它会为每个属性查询数据库吗? 例如: 公共类产品 { 公共虚拟整数ID{get;set;} 公共虚拟字符串名称{get;set;} 公共虚拟字符串全名{get;set;} 公共虚拟浮动价格{get;set;} } 公共类ProductMap:ClassMap { Id(p=>p.Id); Map(p=>p.Name).Not.LazyLoad(); Map(p=>p.FullName).LazyLoad();/
例如:
公共类产品
{
公共虚拟整数ID{get;set;}
公共虚拟字符串名称{get;set;}
公共虚拟字符串全名{get;set;}
公共虚拟浮动价格{get;set;}
}
公共类ProductMap:ClassMap
{
Id(p=>p.Id);
Map(p=>p.Name).Not.LazyLoad();
Map(p=>p.FullName).LazyLoad();//冗余-我知道。。。
Map(p=>p.Price).LazyLoad();//冗余-我知道。。。
}
如果我这样查询数据库:
var product = session.Load<Prodct>(2);
if (product.FullName == "*" && product.Price = 111)
var-product=session.Load(2);
if(product.FullName==“*”&&product.Price=111)
会有3个问题吗
或者当NHibernate查询数据库的全名时,它将查询该行的所有列?NHibernate将在单个查询中加载实体的所有惰性属性(您可以自己尝试…) 这个特性的主要用例是blob 另一方面,惰性引用会根据需要加载
作为旁注,
session.Load
不查询数据库;它只是创建了一个代理,该代理将被延迟加载。使用会话。获取
将有2个查询
这也是我看到的,所以会有两个问题,对吗?希望此破坏比其他线程中处理的要短。;-)是的,您将有一个查询用于非惰性属性,一个查询用于所有惰性属性。
var product = session.Load<Prodct>(2);
if (product.FullName == "*" && product.Price = 111)