NHibernate 3 Linq查询中的跳过和接受问题

NHibernate 3 Linq查询中的跳过和接受问题,nhibernate,linq-to-nhibernate,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

使用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();
} 
var session=this.GetSession();
var rgn=this.Get(regionId);
var query=来自会话中的t.query()
哪里
!(
来自会话中的trn.Query()
其中trn.Region.Id==regionId
选择trn.Tag.Id
)
.包含(t.Id)
选择new Translation(){Id=t.Id,Tag=t,Region=rgn,TagTranslation=”“};
var count=query.count();
var untranslatedTags=query.Skip((第1页)*pageSize.Take(页面大小);
var countAfterSkipAndTake=untranslatedTags.Count();
返回未翻译的tags.ToList();
} 

count变量确实返回了期望值。但是countAfterSkipAndTake返回相同的值。我希望它返回pageSize(在本例中为15)。最后一行untranslatedTags.ToList()返回一个异常。我相信LINQ到NHibernate还没有完全实现,在我尝试下载主干之前,任何人都能看到任何明显的我做错的地方。

我想,正如我过去遇到过的类似问题一样,
var count=query.count()
正在强制nHibernate编译查询,因此将来对它的任何修改都是徒劳的,因为它已经被执行了


要测试这一点,请删除该行,然后查看
countAfterSkipAndTake
现在是否为15。

不幸的是,不是。在尝试了各种不同的东西之后,NHibernate的LINQ实现似乎不喜欢select投影。我更新了我的LINQ语句以包含skip和take,并用一个简单的select()调用替换了select投影,它成功了。在另一个语句中,我想使用Union运算符,但我得到一个异常,说明Union运算符尚未实现。似乎LINQ to NHibernate还有几个问题。