Abrufen von Objekt und Kind Sammlung in NHibernate Linq
-
05-09-2019 - |
Frage
Ich habe ein Problem Linq zu NHibernate ein Objekt zu laden und eifrig ein Kind Sammlung zu laden. Die Objekte sehen wie folgt aus:
public class Order
{
public Guid Id {get; set; }
public IList<OrderLine> OrderLines {get;set;}
}
public class OrderLine
{
public Guid Id {get;set;}
public string Item {get;set;}
}
Ich versuche, einen Auftrag mit einem bestimmten ID und (eifrig) alles zu laden ist Kind Orderlines mit Linq. Meine Abfrage sieht wie folgt aus:
using (var s = _sessionFactory.OpenSession())
using (var tx = s.BeginTransaction())
{
var order = from o in s.Linq<Order>().Expand("OrderLines")
where o.Id == id
select o;
return order.First();
}
Allerdings, wenn ich die Reihenfolge angezeigt werden, enthält die OrderLines
Eigenschaft nur ein Objekt - die Datenbank auf jeden Fall 3. Seltsamer hat, wenn ich eine foreach um order
vor der Rückkehr erhalte ich tun alle 3 Kind Artikel - aber das trifft auf die Datenbank zweimal.
Ich habe versucht, die Abfrage zu modifizieren Single()
zu verwenden, anstatt, aber das funktioniert auch nicht.
Mache ich etwas falsch mit Linq? Oder ist meine Verwendung von Expand
falsch?
Vielen Dank im Voraus,
Simon.
. Hinweis: Ich verwende FluentNHibernate Automapping mein NH Mapping zu erstellen, und meine Datenbank ist eine SQLite-Datenbank (eine Datei, nicht im Speicher)
Lösung
Es scheint, dass diese Funktion einen Fehler hat:
FirstOrDefault () bricht FetchType = verbinden mit Linq to NHibernate
Werfen Sie einen Blick auf die erzeugte Datenbankabfrage, wenn es TOP 1 Klausel hat, kann dies das Problem sein.
Beachten Sie, dass Linq to NHibernate ist noch weit von der Produktion bereit, so dass diese Art von Fehler auftreten können.