2011-09-15 66 views
0

我有一個mant-to-many關係建模在學生和教授(_students_selected)之間的數據庫(與橋表),在我的entites我建模爲一對一的模型,許多關係即教授有一名學生。nhibernate收集查詢與私人支持領域

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對學生增加一個WHERE條件。我如何查詢這個?下面的代碼不起作用。

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

回答

1

NHibernate無法將屬性中的C#代碼轉換爲SQL,它只能用於映射屬性。可以在聲明中使用集合(當然需要公開/內部)或者在內存中過濾結果(但要小心選擇n + 1個問題)。