2011-09-15 7 views
0

J'ai une relation mant-to-many modélisée dans la base de données (avec une table de transition) entre Student et Professor (_students_selected), dans mes entités, je l'ai modélisée comme un-à- de nombreuses relations, par exemple un professeur a un étudiant.requête de collecte nhibernate avec champ de sauvegarde privé

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(); } 
     } 
} 

Les travaux ci-dessus lors de l'obtention des données mais lors de l'interrogation sur les professeurs, je suis incapable d'ajouter un état où les étudiants parce que les données réelles sont mis en correspondance avec les _students sur le terrain de soutien privé. Comment puis-je interroger cela? le code ci-dessous ne fonctionne pas.

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

Répondre

1

NHibernate ne peut pas traduire votre code C# dans la propriété SQL, il ne peut fonctionner avec des propriétés mappées. Soit utiliser la collection dans l'instruction (qui doit être publique/interne, bien sûr), soit filtrer les résultats en mémoire (mais attention aux problèmes n + 1 sélectionnés).

Questions connexes