我正在尝试使用 Fluent-NHibernate 的查询方法,如下所示:
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)
这种语法是正确的,但是 Fluent 对 Linq to Nhibernate 的底层使用存在一个问题,该问题在使用 VB lambda 表达式时会中断。
我不使用 lambda 表达式很好,我只是不知道如何重写该行以不使用 lambda。
作为参考,在 VB 中使用完整的 linq 查询确实适用于 Linq 2 Nhibernate。这个查询对我来说很好:
Dim product = (From p In session.Linq(Of Product)() _
Where p.Id = testId _
Select p).FirstOrDefault()