我有这个查询:
IQueryable<OrderEntity> _records = All().Fetch(x => x.client).FetchMany(x => x.orderItems).ThenFetch(y => y.righeDistinte);
就这个问题而言,这些是所涉及的实体:
public class OrderEntity : IEntity
{
public virtual ClientEntity client { get; set; }
public virtual ICollection<OrderItemEntity> orderItems { get; set; }
}
public class ClientEntity
{
public virtual String cod_clifor { get; set; }
public virtual String des_ragsoc { get; set; }
}
public class OrderItemEntity
{
public virtual ICollection<DistintaItemEntity> righeDistinte { get; set; }
}
public class DistintaItemEntity
{
public virtual OrderItemEntity orderItem { get; set; }
public virtual DistintaEntity distinta { get; set; }
}
因此,每个 OrderEntity 实例引用一个 ClientEntity 和 0 到多个 OrderItemEntity 对象。反过来,每个 OrderItemEntity 可以引用 0 到多个 DistintaItemEntity。
这篇文章顶部的查询返回具有相关客户端和订单项的所有订单的集合,并且每个订单项都具有提取的区别(所有映射都设置得很好)。只需一个 SQL 查询。
到目前为止,一切都很好。
问题在于 DistintaEntity,它不是强制加载的,所以如果我想访问它的一些属性,我需要打开会话,因为延迟加载(只要有一个打开的会话,它就可以工作,但是还有其他查询当然)。
我想在查询中添加一个指令,以强制直接获取与每个 DistintaItemEntity 关联的 DistintaEntity 对象,但我不知道如何在不丢失单个查询结果的情况下执行此操作。
所有一对多关系都是左连接。
谢谢,马里奥