Запрос коллекции nhibernate с частным полем поддержки - PullRequest
0 голосов
/ 15 сентября 2011

У меня есть отношение mant-ко-многим, смоделированное в базе данных (с таблицей мостов) между Студентом и Профессором (_students_selected), в моих энтузиазмах я смоделировал его как отношение один-ко-многим, то есть Профессор имеет одноСтудент.

 HasManyToMany<Student>(Reveal.Member<Professor>("_students"))
   .Table("_students_selected").ChildKeyColumn("student_key").ParentKeyColumn("professor_key");

public class Professor    
{
        private IList<Students> _students;
        public virtual Student Student
        {
            get { return _students.FirstOrDefault(); }
        }
}

Вышеописанное работает при получении данных, однако при запросах к профессорам я не могу добавить условие «где» для студентов, потому что фактические данные сопоставлены с частным вспомогательным полем _students.Как я могу запросить это?код ниже не работает.

_unitOfWork.Session.QueryOver<Professor>().Where(i => i.Student.Id == 24).List();

1 Ответ

1 голос
/ 16 сентября 2011

NHibernate не может перевести ваш код C # внутри свойства в SQL, он может работать только с сопоставленными свойствами. Либо используйте коллекцию в выражении (которая, конечно, должна быть публичной / внутренней), либо отфильтруйте результаты в памяти (но тогда будьте осторожны с задачами выбора n + 1).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...