完全Linq查询而不是使用Fluent-NHibernate的Lambdas?

时间:2009-01-07 15:56:33

标签: vb.net linq nhibernate fluent-nhibernate

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

1 个答案:

答案 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

相关问题