Предполагая, что у меня есть три простые таблицы
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 не распознается.
спасибо.