【发布时间】:2017-08-22 12:35:03
【问题描述】:
我是一个 NHibernate 新手,我正在编写一些由另一位开发人员编写的代码。我想了解 NHibernate 如何将基于 lambda 的条件转换为 SQL。
我知道在 Linq to SQL 中对查询使用 Lambda 表达式意味着整个事情被 Linq to SQL 提供程序转换为表达式树,然后转换为 SQL(在可能的情况下)。这可以通过执行 DataContext.Log = Console.Out 来看到。
但是如果没有使用 Linq to NHibernate 的 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]
... 或者将整个数据集拉入内存并给出一个列表,然后将 lambda 表达式应用于对象。例如
return List<MyObject>.Where(x => x.id = id) [or something similar].
我不确定我的导入 NHibernate.LambdaExtensions 是否提供了一种 SQL 转换。
【问题讨论】:
标签: sql nhibernate lambda