Nhibernate 急加载问题

Nhibernate 急加载问题,nhibernate,linq-to-nhibernate,Nhibernate,Linq To Nhibernate,我对linq to nhibernate查询有问题 var listeShopping = (from cart in session.Query<Cart>() .Fetch(cart => cart.ItemShopping) .ThenFetch(item => item.Manufacturer) select cart.ItemShopping).ToList<ItemShopping>(); 我需要快速加载,如何避免该错误

我对linq to nhibernate查询有问题

var listeShopping = (from cart in session.Query<Cart>()
    .Fetch(cart => cart.ItemShopping)
    .ThenFetch(item => item.Manufacturer)
    select cart.ItemShopping).ToList<ItemShopping>();
我需要快速加载,如何避免该错误?如果有帮助的话,我会提到我使用cart表只是像使用内部联接表一样。我只想知道在购物车里购物的物品

问候

编辑

我修改了代码,使它在英语中可读。我改正了错误

编辑2

我找到了那个方法,似乎很管用。。。如果我没有出错,有人能检查一下吗

        var list = (from item in session.Query<ItemShopping>()
                   .Fetch(item => item.Manufacturer)
                   from cart in item.Cart
                   select item).ToList<ItemShopping>();
var list=(来自session.Query()中的项)
.Fetch(item=>item.Manufacturer)
来自购物车中的物品。购物车
选择项);

我认为使用Linq不可能处理这种情况。但HQL是这样的:

var listeShopping = session.CreateQuery(@"
    select item
    from Cart cart
    join cart.ItemShopping item
    join fetch item.Manufacturer
    ")
    .List<ItemShopping>();
var listeShopping=session.CreateQuery(@)
选择项
从手推车
加入cart.items购物项目
加入获取项。制造商
")
.List();

旁注:以这种方式急于吸引制造商并不一定是最好的方法。考虑在制造商类中使用<代码>批次大小<代码> .< /p>在代码> >选择< <代码> >中定义的<代码> PAN <代码>?您正在查看购物车,从PAN中选择一些东西并试图将其转换为ItMe购物列表…需要一些详细信息:)我修改了代码。。。很抱歉为什么我应该使用批量大小而不是快速加载?赞成和反对的是什么?我通过请求简化了,我有10次提取,但我没有足够的卷来进行一些生产性能测试。@PhilippeSohm:10次提取?您应该使用批大小和缓存,而不是获取。使用批处理大小允许每个实体类型进行小而高效的查询,而使用多个fetch语句会创建成本更高的大型联接。缓存对web应用程序有效吗?如果我有一个类似var items=(从会话中的item(…)选择item)的查询,然后是一个foreach(items中的var item)var data=item.Manufacturer.Name。批量大小有效吗?@PhilippeSohm:是的。考虑到您的制造商并不是每天都在变化,您将看到巨大的查询节省。
var listeShopping = session.CreateQuery(@"
    select item
    from Cart cart
    join cart.ItemShopping item
    join fetch item.Manufacturer
    ")
    .List<ItemShopping>();