0

好的,所以我有以下关系:

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 但我看到了对数据库的调用。我希望能够在前面的代码中添加急切加载语句,以便以后使用内存进行搜索。那可能吗?

4

1 回答 1

0

谢谢您的建议。我删除了急切的加载语句,发现只调用了一次数据库。现在我有一个不同的关注/问题。查询中引用了其他我不熟悉的表。我是代码新手,所以可能只是我没有正确查找关系。但无论如何,谢谢。

于 2013-02-12T21:09:02.273 回答