首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用NHibernate QueryOver连接

如何使用NHibernate QueryOver连接
EN

Stack Overflow用户
提问于 2012-03-27 19:32:57
回答 1查看 13.6K关注 0票数 3

我的代码中有以下情况,无法解决。情况-

代码语言:javascript
复制
var grpA = Session.QueryOver(() => _employeeGroupRelation));
var grpB = Session.QueryOver(() => _employeeGroup));

// var grpC should join grpA and grpB on _employeeGroupRelation.groupID = _employeeGroup.ID 

问题--是否有办法使用grpA和grpB语法连接QueryOver?在不使用grpA或grpB上的List()的情况下,是否可以做到这一点,因为每个记录都将保存近10,000条记录,我不想将它们转储到内存中。这是QueryOver的正确使用吗?有没有更干净的方法来实现我想要解决的问题?

这可能是一个基本的疑问,但我是NHib和QueryOver的新手。

编辑-

代码语言:javascript
复制
select * from employeeGroup a
inner join employeeGroupRelation b on a.ID = b.ID 

这就是我在SQL中要做的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-03-27 21:01:17

最简单的方法是:

代码语言:javascript
复制
session.QueryOver<EmployeeGroup>()
   .JoinQueryOver(employeeGroup => employeeGroup.EmployeeGroupRelation)
   .Take(1000) // The same as top in SQL, if you don't want load all of entities
   .TransformUsing(Transformers.DistinctRootEntity)
   .List();

"JoinQueryOver“将"EmployeeGroup”和相关的"EmployeeGroupRelation“作为LazyLoad的代理(取决于映射)

如果不想使用LazyLoad,可以这样做:

代码语言:javascript
复制
session.QueryOver<EmployeeGroup>()
   .Fetch(employeeGroup => employeeGroup.EmployeeGroupRelation).Eager
   .Take(1000) // The same as top in SQL, if you don't want load all of entities
   .TransformUsing(Transformers.DistinctRootEntity)
   .List();

获取"EmployeeGroup“和相关的"EmployeeGroupRelation”(非代理)

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

https://stackoverflow.com/questions/9896386

复制
相关文章

相似问题

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