好的,所以我有以下关系:
Bulletin < BulletinEmailLog < BulletinEmailLogRecipient - 联系人 - 实体
其中“<”代表一对多,“-”代表一对一。
这是代码:
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>();
在这里,我尝试使用一个数据库查询来获取所有必要的信息。问题是,后来我尝试遍历 BulletinEmailLogs 但我看到了对数据库的调用。我希望能够在前面的代码中添加急切加载语句,以便以后使用内存进行搜索。那可能吗?