Das Include funktioniert nicht, nachdem ich eine Auswahl für die IQueryable-Abfrage durchführen. Gibt es einen Weg dazu? Meine Frage istWenn ich aus einem IQueryable auswählen, ist das Include verloren
public IQueryable<Network> GetAllNetworks()
{
var query = (from n in _db.NetworkSet
.Include("NetworkContacts.Contact")
.Include("NetworkContacts.Contact.RelationshipSource.Target")
.Include("NetworkContacts.Contact.RelationshipSource.Source")
select (n));
return query;;
}
Ich versuche dann mya Ansichtsmodell in meiner WebUI Schicht zu füllen den folgenden Code verwenden
var projectedNetworks =
from n in GetAllNetworks()
select new NetworkViewModel
{
Name = n.Name,
Contacts = from contact in networkList
.SelectMany(nc => nc.NetworkContacts)
.Where(nc => nc.Member == true)
.Where(nc => nc.NetworkId == n.ID)
.Select(c => c.Contact)
select contact,
};
return projectedNetworks;
Das Problem tritt jetzt in meinem neu erstellten NetworkViewModel Die Kontakte Sammlungsobjekte enthalten keine geladene Daten für RelationshipSource.Target oder RelationshipSource.Quelle
Allerdings sind die Daten vorhanden, wenn sie von der ursprünglichen Repository IQueryable-Methode ausgeführt werden. Die zugehörigen Include-Daten werden jedoch anscheinend nicht in die neue Contacts-Auflistung übertragen, die erstellt wird, wenn ich den obigen Code Select New NetworkViewModel {} verwende.
Gibt es eine Möglichkeit, diese Daten beizubehalten, wenn sie an ein neues Objekt übergeben werden? Im Moment bekomme ich immer NULL Ausnahmen
Hallo Craig - Danke für den Kommentar und den Link. Wo soll ich das ContactViewModel verwenden - Schlägst du vor, dass ich eine Projektion innerhalb einer Projizierung mache? Ist das möglich? –