Nhibernate 3 & LINQ
Я конвертирую код из Nhibernate 2.x в 3.0. Раньше я использовал плагин LINQ, чтобы получить поддержку LINQ. Я понял, что в версии 3.0 он включился в качестве функции первого класса. Итак, мой вопрос: я имел обыкновение иметь это:
return new List<T>(session.Linq<T>().Where(where));
Как это выглядит с новым синтаксисом? я прошел через nocs 3 документа и учебник и ничего не видел о материале linq, поэтому я не смог найти пример для шаблона после.
Ответы
Ответ 1
В NHibernate 3 с Linq вы делаете это:
from u in session.Query<User>()
where u.Username == username
select u
или
session.Query<User>().Where(u => u.Username == username)
Не уверен, что это то, что вы ищете.
EDIT: Query<T>
- метод расширения. Не забудьте добавить using NHibernate.Linq
, чтобы использовать его.
Ответ 2
Нет нового синтаксиса. Linq все еще linq. Метод Linq в старом провайдере называется Query в новом.
Вместо нового списка (перечисляемого) вы можете использовать enumerable.ToList(), чтобы предотвратить загрузку каждого объекта в списке с помощью отдельного SQL-запроса.