好的,我有以下关系:
公告< BulletinEmailLog< BulletinEmailLogRecipient - 联系 - 实体
“<”代表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>();
这里我尝试使用一个数据库查询来获取所有必要的信息。 问题是,后来我尝试循环通过BulletinEmailLogs但我看到了对数据库的调用。我希望能够在前面的代码中添加急切的加载语句,以便以后使用内存进行搜索。这可能吗?
答案 0 :(得分:0)
感谢您的建议。我删除了eager load语句,发现只有一次调用数据库。现在我有一个不同的问题/问题。查询中引用了其他我不熟悉的表。我是代码的新手,所以可能只是因为我没有正确地查找关系。但无论如何,谢谢。