29

Tentativo di tagliare la nostra soluzione EF4 a EF CTP5 e si è verificato un problema.EF CTP5 - Caricamento Eager fortemente tipizzato - Come includere proprietà di navigazione nidificate?

Ecco la quota di competenza del modello:

enter image description here

Il rapporto pertinente: - Un singolo County ha molte città - Un singolo Città ha un unico Stato

Ora, desidero eseguire le seguenti operazioni ry: - Ottieni tutte le contee nel sistema e includi tutte le città e tutte le aree dello stato per quelle città.

In EF4, vorrei fare questo:

var query = ctx.Counties.Include("Cities.State"); 

In EF CTP5, abbiamo un fortemente tipizzato Include, che prende un Expression<Func<TModel,TProperty>>.

posso ottenere tutte le città per la contea non è un problema:

var query = ctx.Counties.Include(x => x.Cities); 

Ma come posso ottenere il Stato per quelle città troppo?

Sto usando puro POCO di, in modo da County.Cities è un ICollection<City>, quindi non posso fare questo:

var query = ctx.Counties.Include(x => x.Cities.State) 

Come ICollection<City> non ha una proprietà chiamata State.

È quasi come se avessi bisogno di usare un IQueryable nidificato.

Qualche idea? Devo ricorrere alla stringa magica Includi in questo scenario?

risposta

51

Per questo si può utilizzare la Seleziona metodo:

var query = ctx.Counties.Include(x => x.Cities.Select(c => c.State)) 

Here si può trovare un altro esempio.

+0

intelligente! provando ora ... rimani sintonizzato. – RPM1984

+0

Funziona alla grande, grazie mille uomini! +1 e accettato. Non ti ho visto rispondere di recente a molte domande su EF4 - Ladislav ci sta facendo cadere entrambi. :) – RPM1984

+0

Nessun problema amico! Questo perché sono totalmente concentrato sulle prime domande del codice EF. Spero che tu inizi ad usarlo, visto che continuo a vedere il file EDMX sulla tua domanda :) –