Я немного новичок в NHibernate, и я беру код, написанный другим разработчиком. Я хочу узнать, как NHibernate преобразовывает лямбда-критерии в SQL.
Я знаю, что в Linq to SQL использование лямбда-выражений в запросах означает, что все это превращается в дерево выражений, а затем в SQL (где это возможно) поставщиком Linq to SQL. Это можно увидеть, выполнив DataContext.Log = Console.Out.
Но как насчет выражения критерия NHibernate, где Linq to NHibernate не используется?
Импортируются следующие пространства имен ...
using NHibernate;
using NHibernate.Criterion;
using NHibernate.LambdaExtensions;
.. и код критерия выглядит следующим образом ...
return Session.CreateCriteria<MyObjectType>()
.Add<MyObjectType>(x => x.Id == id)
.UniqueResult<MyObjectType>();
Будет ли это преобразовано в оператор SQL, например
Select distinct * from table where id = [param]
... или весь набор данных будет извлечен в память, давая список, а затем к объектам будут применены лямбда-выражения. например, * 1 016 *
return List<MyObject>.Where(x => x.id = id) [or something similar].
Я не уверен, обеспечивает ли мой импорт NHibernate.LambdaExtensions своего рода перевод на SQL.