Я пытаюсь использовать метод запроса Fluent-NHibernate, который выглядит так:
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)
Этот синтаксис правильный, но есть проблема с базовым использованием Fluent Linq to Nhibernate, которая не работает при использовании лямбда-выражений VB.
Я не против не использовать лямбда-выражения, я просто не знаю, как бы переписать эту строку, чтобы не использовать лямбда.
Для справки: использование полных запросов linq в VB действительно работает с Linq 2 Nhibernate. Этот запрос отлично сработал для меня:
Dim product = (From p In session.Linq(Of Product)() _
Where p.Id = testId _
Select p).FirstOrDefault()





В текущей модели NHibernate LINQ есть много причуд, к сожалению, они не будут устранены до тех пор, пока не будет выпущен NHibernate 2.1. В ядро NHibernate необходимо внести изменения, чтобы действительно полностью поддерживать его, поэтому вместо contrib оно будет полной / интегрированной частью выпуска 2.1. Несколько месяцев назад Айенде опубликовала обновление блога, в котором излагаются текущие предостережения и планы..