首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >NHibernate Lazy="Extra“

NHibernate Lazy="Extra“
EN

Stack Overflow用户
提问于 2011-02-22 23:15:30
回答 3查看 5.8K关注 0票数 13

关于lazy="extra“到底能做什么,有没有一个很好的解释?

我看到的所有帖子都只是重复了一个事实,即它将对MyObject.ItsCollection.Count的引用转换为select count(*)查询(假设它们还没有加载)。

我想知道它是否能够实现更健壮的功能,比如将MyObject.ItsCollection.Any(o => o.Whatever == 5)转换为SELECT ...EXISTS查询。

docs的第18.1节只涉及到它。我不是一名NH开发人员,所以如果不做一些工作来设置所有东西,我就不能真正地试验它并观看SQL Profiler;我只是在寻找一些描述这个特性功能的参考资料。

谢谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-02-22 23:54:48

对于2.x版本,它仅用于将collection.Count()转换为select count,并且据我在源代码中所见,它还将允许构造collection[5]获取特定的实体(索引为5),而不是合并整个集合。

对于版本3.x,我在发行说明中看不到任何相关内容

票数 20
EN

Stack Overflow用户

发布于 2012-02-24 06:21:48

刚尝试对映射为lazy="extra“的集合Customer.Orders调用Any()

代码语言:javascript
复制
customer.Orders.Any()

生成的SQL语句如下所示(简化后):

代码语言:javascript
复制
SELECT *
FROM Order
WHERE CustomerId = 120

而当调用

代码语言:javascript
复制
customer.Orders.Count > 0

生成的SQL如下所示:

代码语言:javascript
复制
SELECT count(*)
FROM Order
WHERE CustomerId = 120
票数 5
EN

Stack Overflow用户

发布于 2011-02-22 23:23:51

lazy = extra允许计算集合的元素而不需要获取它,因为惰性实体是用代理装饰的,当客户端代码请求集合上的.Count时,会向数据库发出适当的"select count“查询。如果没有lazy=extra,则从数据库中读取集合。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5079962

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档