2
假设我有三个简单的表格NHibernate的queryover如何选择一个别名列?
schedule
{
Student student { get; set;}
Teacher teacher { get; set;}
bool Deleted { get; set; }
}
Student
{
string Name { get; set; }
IList<schedule> TeacherMeetings {get; set; }
}
,并承担老师有同样的事情,姓名和学生安排的名单。
我要选择,从日程安排,对于特定的老师所有学生的名字的列表。我可以根据条件和所有内容编写查询,但无法仅选择学生姓名。
这里是我当前的查询:
DetachedCriteria dc = QueryOver.Of<Schedule>(() => sAlias)
.JoinAlias(() => sAlias.student,() => studentAlias)
.JoinAlias(() => sAlias.teacher,() => teacherAlias)
.Where(() => teacherAlias.MembershipGuid == teacherGuid)
.AndNot(() => sAlias.isDeleted)
//.Select(() => studentAlias.Name)
.SelectList(list => list
.SelectGroup(x => x.student.Name).WithAlias(() => studentAlias.Name))
.DetachedCriteria
;
如果我注释掉所有select
,探查显示如右图一个正在生成的查询,右对右表中的连接,只是,它选择所有所有列表。
我似乎无法得到select
的权利,我只需要student.Name
而已。
如何写这个吗?我已经在这一个多小时尝试不同的东西,但它始终是选择错误了,说NHibernate.QueryException: could not resolve property
和studentName无法识别。
谢谢。
优秀!那工作..嗯..所以''withAlias''只能用于Transform? – LocustHorde 2012-03-08 15:37:03
另外,请问我现在该如何订购这位''studentAlias.Name''? – LocustHorde 2012-03-08 15:37:20
我希望我可以多次投票。 – LocustHorde 2012-03-08 15:37:31