次のような 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()