Probleme beim Laden verwandter Entitäten (Eager Load) mit ObjectContext.CreateQuery (Entity Framework und Repositories)

Hier ist eine Reihe von Dingen, die ich ausprobiert habe. Hoffentlich können Sie daraus extrapolieren, was ich versuche und was ich falsch mache. Okay, ich habe Probleme beim Laden verwandter Entitäten, wenn ich diese DoQuery verwende:

   public ObjectQuery<E> DoQuery(ISpecification<E> where)
   {
        return (ObjectQuery<E>)_ctx.CreateQuery<E>("[" + typeof(E).Name + "]").Where(where.EvalPredicate);
   }

Wenn ich dies nur benutze, erhalte ich ein Objekt zurück, das alle korrekten Parameter außer denjenigen enthält, die verwandte Entitäten sind ... dh. Wenn es sich um eine UserID handelt, die auf die User-Tabelle verweist, wird das User-Objekt ebenfalls nicht zurückgegeben.

Ich habe gelesen, dass Sie ein .Include ("User") ausführen können, um eine eifrige Ladung der Entität durchzuführen ... aber es funktioniert nicht, wenn ich Folgendes versuche:

public ObjectQuery<E> DoQuery(ISpecification<E> where)
{
     return (ObjectQuery<E>)_ctx.CreateQuery<E>("[" + typeof(E).Name + "]").Include("User").Where(where.EvalPredicate);
}

Ich habe auch überprüft, ob der Entity-Set-Name und der Modellname "Benutzer" sind, was auch immer der Fall ist. Das einzige andere, woran ich denken könnte, ist, mehrere Dinge in die("[" + typeof(E).Name + "]") Aber ich bin mir nicht sicher, wie ich mehrere Entitäten einbinden soll ... Ich habe Folgendes versucht, da ich gesehen habe, dass jemand sagte, Sie könnten mehrere laden, indem Sie ein einfügen. zwischen.

public ObjectQuery<E> DoQuery(ISpecification<E> where)
{
     return (ObjectQuery<E>)_ctx.CreateQuery<E>("[" + typeof(E).Name + "].[User]").Where(where.EvalPredicate);
}

Aber das hat nicht funktioniert ...

Wenn ich nicht auf dem richtigen Weg bin, lass es mich wissen. Weiß jemand, wie man die verbundenen Entitäten lädt, wenn man ObjectContext.CreateQuery verwendet? Anregungen oder Einsichten helfen.

Vielen Dank,
Matt

Antworten auf die Frage(2)

Ihre Antwort auf die Frage