Frage

Die folgende Abfrage schlägt fehl, die Tabellen zu laden, wenn ich es ausführen:

IEnumerable<Bookmark> tempBookmarks = ListBookmarksByUserID(userID);
IEnumerable<CandidateWithBookmarks> results = (from c in _internshipEntities.CandidateSet
                                            .Include("education")
                                            .Include("progress")
                                            .Include("contacts")
                                            .Include("availability")
                                            .Include("hosttypes")
                                            .Include("hostsizes")
                                            .Include("hostcapacities")
                                            .Include("hoststates")
                                            .Include("users")
                       join b in tempBookmarks on c.ID equals b.candidates.ID
                       select new CandidateWithBookmarks()
                                  {CandidateObject = c, BookmarkObject = b});
return results;

Ich habe einige Artikel gefunden Zusammenhang mit dem Problem, nämlich Alex James' Artikel "How to make wirklich" INCLUDE. Die Lösung kommt mit einer Einschränkung:

  

Für das Ihre endgültige wählen arbeiten Einheiten sein müssen, das heißt wählen Post anstatt wählen neue {...}

Welche offensichtlich ein Problem für den obigen Code-Block ist. Gibt es noch andere bekannte Abhilfen für dieses Problem, das nicht gerne Laden brechen wird?

War es hilfreich?

Lösung

Ich glaube, ich dieses Problem gelöst, aber es könnte nur für diese bestimmte Instanz arbeiten, indem das umfasst nach dem Join, die Abfrage scheint zu funktionieren:

IEnumerable<CandidateWithBookmarks> results = (
    from b in tempBookmarks
    join c in _internshipEntities.CandidateSet
                                 .Include("education")
                                 .Include("progress")
                                 .Include("contacts")
                                 .Include("availability")
                                 .Include("hosttypes")
                                 .Include("hostsizes")
                                 .Include("hostcapacities")
                                 .Include("hoststates")
                                 .Include("users")
    on b.candidates.ID equals c.ID
    select new CandidateWithBookmarks(){CandidateObject = c, BookmarkObject = b});

Edit:. Eine weitere Abfrage, die ich in etwa so haben erfordert ein äußeree Verknüpfung als auch, was einige Probleme schafft, da es dann wichtig ist, was Sie zu dem, was kommen, im Gegensatz zu diesem Beispiel, aber es ist immer noch machbar

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