わかりましたので、次の関係があります。
Bulletin < BulletinEmailLog < BulletinEmailLogRecipient - 連絡先 - エンティティ
「<」は 1 対多を表し、「-」は 1 対 1 を表します。
コードは次のとおりです。
BulletinEmailLog BulletinEmailLogs = null;
BulletinEmailRecipient EmailRecipients = null;
Contact Contact = null;
Entity Entity = null;
var pastBulletin = NHibernateSession.Current.QueryOver<Bulletin>()
.Where(x => x.Id == bulletinID)
.Fetch(x => x.BulletinEmailLogs).Eager
.JoinAlias(x => x.BulletinEmailLogs, () => BulletinEmailLogs, NHibernate.SqlCommand.JoinType.LeftOuterJoin)
.JoinAlias(() => BulletinEmailLogs.Recipients, () => EmailRecipients, NHibernate.SqlCommand.JoinType.LeftOuterJoin)
.JoinAlias(() => EmailRecipients.Contact, () => Contact, NHibernate.SqlCommand.JoinType.LeftOuterJoin)
.JoinAlias(() => Contact.Entity, () => Entity, NHibernate.SqlCommand.JoinType.LeftOuterJoin)
.Future<Bulletin>();
ここでは、1 つのデータベース クエリを使用して、必要な情報をすべて取得しようとしています。問題は、後で BulletinEmailLogs をループしようとしたときに、データベースへの呼び出しが表示されることです。後でメモリを使用して検索を行うために、前のコード内に熱心な読み込みステートメントを追加できるようにしたいと考えています。それは可能ですか?