(流利)NHibernate SELECT IN
给出下表:
tool
*toolid
*n other fields
process
*processid
*n other fields
toolprocess
*toolprocessid
*toolid
*processid
*n other fields
当尝试为特定进程选择所有工具时,我在 toolprocess 上进行了数千次选择,其中我的 Linq 如下所示:
from tool in tools
where toolprocesses.Any(t=>t.Tool.Id==tool.Id)
select tool
其中 toolprocesses 包含具有相同 processid 的工具进程列表
在 SQL 中我只需编写
SELECT * FROM TOOL WHERE toolid IN
(SELECT TOOLID FROM TOOLPROCESS WHERE processid = 'someid');
它几乎不需要时间并且按预期工作
如何让 NHibernate 创建此查询(或类似的查询)?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我不知道是否可以在 Query 中完成,但可以在 QueryOver / Criteria 中完成。
在 QueryOver 中,它看起来像:
http: //www.philliphaydon.com/2010/09/28/queryover-with-nhibernate-3-lovin-it/
或者,如果你想做 Exists 而不是比在,我在这里写了博客:
http://www.philliphaydon.com/2011/01/19/revisiting-exists-in-nhibernate-3-0-and-queryover/
I don't know if you can do it in Query, but you can do it in QueryOver / Criteria.
In QueryOver it would look like:
http://www.philliphaydon.com/2010/09/28/queryover-with-nhibernate-3-lovin-it/
Alternatively, if you want to do Exists rather than In, I've blogged about it here:
http://www.philliphaydon.com/2011/01/19/revisiting-exists-in-nhibernate-3-0-and-queryover/
尝试一下
,我假设您使用的是 NH 3.X。这应该比 Select...Where...In 查询更快。
Try
I assume that you're using NH 3.X. This should be even faster than the Select...Where...In query.