私はこのクエリを持っています:
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インスタンスは、1つのClientEntityと0から多くのOrderItemEntityオブジェクトを参照します。次に、各OrderItemEntityは0から多くのDistintaItemEntityを参照できます。
この投稿の上部にあるクエリは、関連するクライアントとorderitemsを含むすべての注文のコレクションを返し、各orderitemには識別性がフェッチされます(すべてのマッピングが適切に設定されています)。たった1つのSQLクエリですべて。
ここまでは順調ですね。
問題は、強制的に読み込まれないDistintaEntityにあります。そのため、そのプロパティの一部にアクセスする場合は、遅延読み込みのためにセッションを開く必要があります(開いているセッションがある限り、機能しますが、追加のクエリがありますもちろん)。
各DistintaItemEntityに関連付けられたDistintaEntityオブジェクトの直接フェッチを強制するディレクティブをクエリに追加したいのですが、単一のクエリ結果を失うことなくそれを行う方法がわかりません。
すべての1対多の関係は結合されたままになります。
ありがとう、マリオ