2009-05-20 5 views
1

Je suis aux prises avec NHibernate et son chargement par la poste.NHibernate - LazyLoad un-à-zéro

J'ai une structure que j'ai simplifiée mais qui montre mon problème.

Class Shift { 
int ShiftID; 
DateTime ShiftStart; 
Employee Employee; 
} 

Class Employee { 
int EmployeeID; 
string Name; 
} 

données:

ShiftData 
ID       SHIFTTIME  EmployeeID (int) 
1       12:00     0 
2       13:00     1 
3       14:00     0       
4       13:00     3 


Employees 
ID       NAME 
1       Morten 
2       Peter 
3       Henrik 

Ma stratégie de chargement pour le déplacement utilise Rejoignez de sorte que lorsque je charge les quarts de travail NHibernate fait automatiquement une jointure gauche pour obtenir le client. Cela fonctionne parfaitement pour les quarts avec les employés attachés, mais certains quarts n'ont pas encore d'employés. Lorsque j'essaie d'accéder à l'employé d'un tel poste une fois que le poste est chargé, il en résulte un autre SELECT sur la base de données (découvert en utilisant votre NHProfiler) Pourquoi cela se produit-il?

J'espère que vous avez une réponse que je suis vraiment bloqué à ce sujet.

+0

Est-ce que EmployeeID doit être null au lieu de 0? – Canton

Répondre

1

Je suppose que cela se produit parce que les quarts de travail sans employés auront un proxy Employee vide. NHibernate voit le proxy vide et essaie consciencieusement de charger les données de la base de données. En ce qui concerne la solution, voir votre cartographie serait vraiment utile. Cependant, vous pouvez essayer de vous assurer que la relation a l'attribut fetch = "join" ou désactiver le chargement paresseux pour cette relation.

+0

Eh bien j'ai vraiment essayé beaucoup. Faire une jointure, en tournant la charge paresseuse sur la classe et la référence. public ShiftMap() { Not.LazyLoad(); WithTable ("shift_db"); Id (x => x.id, "shift_id"). WithUnsavedValue (0); Carte (x => x.Starttime, "shift_start"); Références (x => x.Employee, "shift_employee"). Join(). NotFound.Ignore(). Not.LazyLoad(); } –

Questions connexes