gpt4 book ai didi

nhibernate queryover 如何选择别名列?

转载 作者:行者123 更新时间:2023-12-04 05:54:57 27 4
gpt4 key购买 nike

假设我有三个简单的表

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 . WithAlias用于将该列投影到结果对象上的成员中。

这样的事情应该工作:

DetachedCriteria dc = QueryOver.Of<Schedule>(() => sAlias)
.JoinAlias(() => sAlias.student, () => studentAlias)
.JoinAlias(() => sAlias.teacher, () => teacherAlias)
.Where(() => teacherAlias.MembershipGuid == teacherGuid)
.AndNot(() => sAlias.isDeleted)
.SelectList(list => list
.Select(() => studentAlias.Name))
.DetachedCriteria;

因此,以下内容应该为您提供一个字符串列表:

IList<string> names = dc.GetExecutableCriteria(session)
.List<string>();

更新 (每条评论)。以下是按学生姓名降序排序的方法:

DetachedCriteria dc = QueryOver.Of<Schedule>(() => sAlias)
.JoinAlias(() => sAlias.student, () => studentAlias)
.JoinAlias(() => sAlias.teacher, () => teacherAlias)
.Where(() => teacherAlias.MembershipGuid == teacherGuid)
.AndNot(() => sAlias.isDeleted)
.SelectList(list => list
.Select(() => studentAlias.Name))
.OrderBy(() => studentAlias.Name).Desc()
.DetachedCriteria;

关于nhibernate queryover 如何选择别名列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9619620/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com