L'inclusione non funziona dopo aver eseguito una selezione sulla query IQueryable. C'è un modo attorno a questo? La mia domanda èSe si seleziona da un IQueryable, l'inclusione viene persa
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;;
}
Allora provo a popolare Mya ViewModel nel mio strato WebUI utilizzando il seguente codice
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;
Il problema ora si verifica nel mio recente creazione NetworkViewModel Gli oggetti Contatti collezione non includono alcuna dati caricati per RelationshipSource.Target o RelationshipSource.Source
Tuttavia, i dati sono presenti quando vengono eseguiti dal metodo IQueryable del repository originale. Tuttavia, i relativi dati di inclusione non sembrano essere trasferiti nella nuova raccolta di Contatti che viene creata quando utilizzo il codice Select New NetworkViewModel {} sopra.
C'è un modo per conservare questo dati Includi quando viene passato in un nuovo oggetto? Al momento continuo a ricevere le eccezioni NULL
Ciao Craig - Grazie per il commento e il collegamento. Dove dovrei usare ContactViewModel - Stai suggerendo che io faccia una proiezione all'interno di una proiezione? È possibile? –