你如何在Fetch方法中通过Alias加载数据?

时间:2013-02-11 20:01:53

标签: c# nhibernate collections fluent-nhibernate eager-loading

好的,我有以下关系:

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

1 个答案:

答案 0 :(得分:0)

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