我正在尝试使用Fluent-NHibernate的Query方法,如下所示:
public T[] Query<T>(Expression<System.Func<T, bool>> where)
{
return _session.Linq<T>().Where(where).ToArray();
}
我正在使用VB,所以要发送一个lambda表达式,我可以用这样的行来调用它:
Dim products = flRepos.Query(Of Product)(Function(p As Product) p.Id > 5)
这种语法是正确的,但是当使用VB lambda表达式时,Fluent底层使用Linq到Nhibernate会出现问题。
我没有使用lambda表达式,我只是不知道如何重写该行以不使用lambda。
作为参考,在VB中使用完整的linq查询可以使用Linq 2 Nhibernate。这个查询对我来说很好:
Dim product = (From p In session.Linq(Of Product)() _
Where p.Id = testId _
Select p).FirstOrDefault()
答案 0 :(得分:1)
当前的NHibernate LINQ模型有很多怪癖,遗憾的是,在NHibernate 2.1发布之前,这些都不会真正得到解决。 NHibernate核心需要进行一些更改才能真正完全支持它,因此它不是一个contrib,而是2.1版本的完整/集成部分。 Ayende has a blog update posted a few months ago outlining the current caveats/plans