Linq-to-entities - Include () -Methode wird nicht geladen
Wenn ich eine Verknüpfung, die Include () - Methode nicht mehr funktioniert, zB:
from e in dc.Entities.Include("Properties")
join i in dc.Items on e.ID equals i.Member.ID
where (i.Collection.ID == collectionID)
select e
e.Properties
ist nicht geladen
Ohne die Verknüpfung, die Include() funktioniert
Lee
Kommentar zu dem Problem - Öffnen
Warum denken Sie so? Sie navent Werte nach der Ausführung?
Ich vermute, dass Sie "Eigenschaften" ist nicht der eigentliche string, den Sie übergeben haben. Dies bedeutet, dass Sie weggelassen haben den wichtigsten Teil der Frage. Auch Frage ich mich, warum Sie mit join; navigation Eigenschaften sind in der Regel die richtige Art und Weise zu durchqueren Beziehungen im Entity Framework.
pocheptsov - ich weiß, dass die Properties noch nicht geladen, da Proeprties.IsLoaded false Hi Craig - "Eigenschaften" ist der korrekte string. Die Verknüpfung auf eine andere Navigations-Items-Eigenschaft. Die Verknüpfung ist es, weil ich einen Wert für eine Eigenschaft des Item-Objekts (Sammlung.ID) aber ich will Entität, die in Bezug auf Sie. Lee
InformationsquelleAutor der Frage Lee Atkinson | 2009-04-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
UPDATE: Tatsächlich habe ich vor kurzem Hinzugefügt ein weiterer Tipp, deckt dieses, und stellt ein Alternatives wahrscheinlich die bessere Lösung. Die Idee ist, zu verzögern, die Verwendung von Include (), bis das Ende der Abfrage finden Sie in diesem weitere Informationen: Tipp 22 - Wie man zählen, wirklich zählen
Gibt es bekannte Einschränkung in das Entity Framework bei der Verwendung von Include().
Bestimmte Operationen einfach nicht unterstützt, Gehören.
Sieht aus wie Sie haben können laufen in einer auf diese Einschränkungen zu umgehen, sollten Sie versuchen, so etwas wie dieses:
Diese zurück zu bringen die Eigenschaften, und wenn die Beziehung zwischen Wesen und Eigenschaften ist ein eins-zu-viele (aber nicht viele zu viele) Sie werden feststellen, dass jede daraus resultierende anonyme Typ hat die gleichen Werte in:
Dies ist ein side-Effekt, eine Funktion, in der das Entity Framework namens Beziehung-Korrektur.
Sehen diese Tipp 1 in meinem EF-Tipps-Serie für weitere Informationen.
InformationsquelleAutor der Antwort Alex James
Versuchen Sie dies:
InformationsquelleAutor der Antwort Bryan2010
Also, was ist der name des Navi-Eigenschaft auf "Unternehmen" bezieht sich auf "Element.Mitglied" (D. H., das andere Ende der navigation). Sie sollten diese statt der Verknüpfung. Zum Beispiel, wenn "Person" fügen Sie eine Eigenschaft, die man als Mitglied mit der Kardinalität 1 und Mitglied hatte eine Eigenschaft, die man als Elemente mit einer Kardinalität von viele, Sie könnten dies tun:
Ich vermute, bei den Eigenschaften von deinem Modell hier, aber dies sollte Ihnen die Allgemeine Idee. In den meisten Fällen die Nutzung von join in LINQ to Entities ist falsch, weil es suggeriert, dass entweder die Navigations-Eigenschaften, die nicht richtig eingerichtet sind, oder die Sie nicht verwenden.
InformationsquelleAutor der Antwort Craig Stuntz
So, ich merke ich bin zu spät zur party hier, aber ich dachte, ich würde meine Erkenntnisse. Das sollte eigentlich ein Kommentar auf Alex James ' s post, aber ich habe nicht den Ruf, den Sie haben, hierher zu kommen.
Also meine Antwort ist: es scheint nicht, überhaupt zu arbeiten wie Sie wollen. Alex James gibt zwei interessante Lösungen, aber wenn Sie versuchen Sie, und überprüfen Sie das SQL, das ist schrecklich.
Dem Beispiel, das ich arbeiten war:
Dieser folgt die einfachere der beiden Beispiele. Ohne gehören, die es produziert, die durchaus respektabel sql:
Aber mit, OMG:
Totalen Müll. Der entscheidende Punkt, hier zu beachten ist die Tatsache, dass es gibt den äußeren beigetreten version der Tabelle, die nicht nur durch den status=1.
Diese Ergebnisse in die FALSCHE Daten zurückgegeben:
Beachten Sie, dass die status 2 zurückgegeben wird dort, trotz unserer Beschränkung. Es funktioniert einfach nicht.
Wenn ich gegangen bin irgendwo falsch, ich würde mich freuen, zu erfahren, wie das ist, so dass eine Verhöhnung von Linq. Ich Liebe die Idee, aber die Ausführung scheint nicht nutzbar im moment.
Aus Neugier habe ich versucht, die LinqToSQL dbml eher als die LinqToEntities edmx, produziert das Chaos oben:
Etwas kompakter - komisch count-Klausel, aber insgesamt die gleiche Summe SCHEITERN.
Hat jemand eigentlich schon mal verwendet, dieses Zeug in eine echte business-Anwendung? Ich bin wirklich beginnen sich zu Fragen,...
Bitte sagen Sie mir, ich habe etwas verpasst, offensichtlich, wie ich wirklich wollen, um wie Linq!
InformationsquelleAutor der Antwort Kinetic
Versuchen, die Ausführlicher Weise zu
das tun mehr oder weniger das gleichedie gleichen Ergebnisse zu erzielen, aber mit mehr datacalls:Haben Sie immer noch die gleiche (unerwartete) Ergebnis?
BEARBEITEN: Geändert, den ersten Satz, denn es war falsch. Vielen Dank für die Zeiger Kommentar!
InformationsquelleAutor der Antwort Tomas Lycken