2

次のような Fluent-NHibernate の Query メソッドを使用しようとしています。

public T[] Query<T>(Expression<System.Func<T, bool>> where)
        {
            return _session.Linq<T>().Where(where).ToArray();
        }

私はVBを使用しているので、ラムダ式を送信するには、次のような行で呼び出すことができます:

Dim products = flRepos.Query(Of Product)(Function(p As Product) p.Id > 5)

この構文は正しいですが、VB ラムダ式を使用すると壊れる Fluent の基本的な Linq to Nhibernate の使用に問題があります。

ラムダ式を使用しなくても問題ありません。ラムダを使用しないようにその行を書き直す方法がわかりません。

参考までに、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 コアを完全にサポートするために必要な変更があるため、contrib の代わりに、2.1 リリースの完全な/統合された部分になります。Ayende は、数か月前に投稿されたブログの最新情報で、現在の警告/計画の概要を説明しています。

于 2009-03-10T15:27:24.763 に答える