问题与跳过并接受NHibernate 3 Linq查询

时间:2011-01-02 19:08:49

标签: nhibernate linq-to-nhibernate

使用linq到NHibernate(NHibernate v3)我有以下LINQ查询:

    var session = this.GetSession();
    var rgn = this.Get(regionId);

    var query = from t in session.Query<Tag>()
                where
                    !(
                        from trn in session.Query<Translation>() 
                        where trn.Region.Id == regionId 
                        select trn.Tag.Id
                     )
                     .Contains(t.Id)

                select new Translation() {Id = t.Id, Tag = t, Region = rgn, TagTranslation=""};

    var count = query.Count();
    var untranslatedTags = query.Skip((page - 1)*pageSize).Take(pageSize);
    var countAfterSkipAndTake = untranslatedTags.Count();
    return untranslatedTags.ToList();
} 

count变量确实返回了预期值。但是countAfterSkipAndTake返回相同的值。我希望它能返回pageSize(在这种情况下是15)。最后一行untranslatedTags.ToList()返回一个异常。我相信LINQ到NHibernate还没有完全实现,在我尝试下载trunk之前,任何人都可以看到任何明显我做错了。

1 个答案:

答案 0 :(得分:1)

我想,因为我过去遇到过类似的问题,var count = query.Count();迫使nHibernate编译查询,因此任何未来修改它都是徒劳的,因为它&#39已经被处决了。

要对此进行测试,请删除该行并查看countAfterSkipAndTake现在是否为15。