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)

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top