2

我正在尝试使用 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() 
4

1 回答 1

1

当前的 NHibernate LINQ 模型有很多怪癖,不幸的是,这些问题在 NHibernate 2.1 发布之前不会真正得到解决。NHibernate 核心需要进行一些更改才能真正完全支持它,因此它将成为 2.1 版本的完整/集成部分,而不是 contrib。Ayende 几个月前发布了一篇博客更新,概述了当前的警告/计划

于 2009-03-10T15:27:24.763 回答