Nhibernate查询<;T>;/queryover<;T>;按子查询排序
我在获取Nhibernate 3.3.2.4000以生成orderby子句中使用的正确子查询时遇到问题,如下所示:Nhibernate查询<;T>;/queryover<;T>;按子查询排序,nhibernate,sql-order-by,subquery,queryover,Nhibernate,Sql Order By,Subquery,Queryover,我在获取Nhibernate 3.3.2.4000以生成orderby子句中使用的正确子查询时遇到问题,如下所示: select * from dbo.Person p inner join dbo.Task t on p.Task_FK = p.TaskId order by (select p.CustomerNumber where p.IsMain=1) desc 我们有两个实体:Task和Person 一个任务可以有N个相关人员。即任务具有IList属性 如何使Nhiber
select *
from dbo.Person p inner join dbo.Task t on p.Task_FK = p.TaskId
order by (select p.CustomerNumber where p.IsMain=1) desc
我们有两个实体:Task
和Person
一个任务可以有N个相关人员。即任务具有IList属性
如何使Nhibernate生成正确的子查询?我已经通过查询API实现了如下功能:
query = query.OrderBy(x => x.Persons.Single(t => t.CustomerNumber));
但我不确定如何正确生成原始sql查询中显示的where子句。使用QueryOverAPI是否更容易做到这一点
欢迎提供任何建议或指导。Task Task=null
Task task = null
Person person = null;
var subquery = QueryOver.Of<Task>()
.Where(t => t.Id == task.Id)
.JoinQueryOver(t => t.Persons, () => person)
.Where(p => p.IsMain)
.Select(() => person.CustomerNumber);
var query = session.QueryOver(() => task)
.OrderBy(Projections.SubQuery(subquery))
.FetchMany(x => x.Persons)
return query.List();
Person=null;
var subquery=QueryOver.Of()
.Where(t=>t.Id==task.Id)
.JoinQueryOver(t=>t.person,()=>person)
.其中(p=>p.IsMain)
.选择(()=>person.CustomerNumber);
var query=session.QueryOver(()=>task)
.OrderBy(投影.子查询(子查询))
.FetchMany(x=>x.Persons)
返回query.List();
感谢您的反馈@Firo。子查询中的select子句给出了无法解析方法select(lamda表达式)的错误。有什么线索吗?如果你写。选择(=>person.CustomerNumber)
?