Ich habe gerade mein Projekt auf NHibernate 3.0 aktualisiert, und ich versuche, einige meiner Kriterienanweisungen in LINQ-Anweisungen zu konvertieren. Alles scheint gut zu funktionieren, außer dass die neuen LINQ-Anweisungen die Abrufregeln, die ich in meinen Mapping-Dateien (mit FluentNHibernate) deklariert habe, nicht zu beachten scheinen.Werden globale Abrufregeln vom LINQ-Anbieter in NHibernate 3.0 berücksichtigt?
Zum Beispiel:
public UserMap
{
Id(x => x.Id);
References(x => x.Course).Fetch.Join();
}
Jetzt Abfrage ich alle Benutzer wie folgt aus:
var users = Session.Query<User>().ToList();
ich die Sammlung zurückgegeben erwarten würden alle Nutzer in der Datenbank mit ihren Kurs Eigenschaften mit Spannung geladen zu sein, Genau das würde ich bei der Verwendung von Criteria-Anweisungen erhalten. Bei der Verwendung des LINQ-Anbieters enthält die von NH erzeugte Abfrage jedoch nicht den Join in der Tabelle "Course", so dass alle Kurse nur langsam geladen werden können. Wird dieses Verhalten erwartet? Wenn ja, wie kann ich erreichen, dass NHibernate Abrufregeln berücksichtigt, die in den Mappings deklariert sind?
Dies ist unmöglich für mich, weil ich die IQueryable als eine Eigenschaft auf einer IDataContext-Schnittstelle, die von meinem Web-Projekt verwendet wird (die keinen Bezug zu NHibernate und sollte nicht über das Abrufen von Strategien sowieso keine Sorge). –
funlambda