Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 多列上的Nhibernate延迟加载_C#_Performance_Nhibernate_Fluent Nhibernate_Lazy Loading - Fatal编程技术网

C# 多列上的Nhibernate延迟加载

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();/

如果我使用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();//冗余-我知道。。。
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)