Linq-to-Entitäten - Include () -Methode wird nicht geladen

entity-framework linq

Frage

Wenn ich einen Join verwende, funktioniert die Include () -Methode nicht mehr.

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 wird nicht geladen

Ohne den Join funktioniert Include ()

Lee

Akzeptierte Antwort

UPDATE: Ich habe vor kurzem einen weiteren Tipp hinzugefügt, der dies abdeckt und eine alternative, wahrscheinlich bessere Lösung darstellt. Die Idee ist, die Verwendung von Include () bis zum Ende der Abfrage zu verzögern. Weitere Informationen hierzu finden Sie hier: Tipp 22 - So machen Sie Include wirklich einschließen


Bei der Verwendung von Include () gibt es im Entity Framework bekannte Einschränkungen. Bestimmte Operationen werden von Include nicht unterstützt.

Sieht so aus, als hätten Sie bei diesen Einschränkungen einen Fehler gefunden. Um dies zu umgehen, sollten Sie Folgendes versuchen:

var results = 
   from e in dc.Entities //Notice no include
   join i in dc.Items on e.ID equals i.Member.ID
   where (i.Collection.ID == collectionID) 
   select new {Entity = e, Properties = e.Properties};

Dadurch werden die Eigenschaften wiederhergestellt. Wenn die Beziehung zwischen Entität und Eigenschaften eins zu vielen ist (jedoch nicht viele zu viele), werden Sie feststellen, dass jeder resultierende anonyme Typ die gleichen Werte aufweist:

anonType.Entity.Properties
anonType.Properties

Dies ist ein Nebeneffekt eines Features in Entity Framework, das als Beziehungsfixup bezeichnet wird.

Weitere Informationen finden Sie in diesem Tipp 1 in meiner EF-Tipps-Serie .


Beliebte Antwort

Versuche dies:

var query = (ObjectQuery<Entities>)(from e in dc.Entities
            join i in dc.Items on e.ID equals i.Member.ID
            where (i.Collection.ID == collectionID) 
            select e)

return query.Include("Properties") 


Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum