2011-01-26 10 views
29

Intentando trasladar nuestra solución EF4 a EF CTP5, y se encontró con un problema.EF CTP5 - Carga ansiosa fuertemente tipada - ¿Cómo incluir las propiedades de navegación anidadas?

Ésta es la parte relevante del modelo:

enter image description here

La relación pertinente: - Una sola Condado tiene muchas ciudades - Una sola Ciudad tiene un solo Estado

Ahora, quiero realizar la siguiente que ry: - Obtenga todos los condados en el sistema e incluya todas las ciudades y todos los estados para esas ciudades.

En EF4, Me gustaría hacer esto:

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

En EF CTP5, tenemos una inflexible Incluir, que toma un Expression<Func<TModel,TProperty>>.

yo puede conseguir todas las ciudades para el Condado no hay problema:

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

Pero, ¿cómo puedo obtener el Estadode esas ciudades también?

estoy usando pura POCO de, por lo que es un County.CitiesICollection<City>, por lo tanto, no puedo hacer esto:

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

Como ICollection<City> no tiene una propiedad llamada State.

Es casi como si tuviera que usar un IQueryable anidado.

¿Alguna idea? ¿Debo recurrir a la cadena mágica Incluir en este escenario?

Respuesta

51

Para eso se puede utilizar el método de Seleccionar:

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

Here puede encontrar otro ejemplo.

+0

listo! intentando ahora ... estad atentos. – RPM1984

+0

Funciona muy bien, ¡gracias a todos! +1 y aceptado. No te he visto contestar muchas preguntas sobre EF4 últimamente: Ladislav nos está derribando a los dos. :) – RPM1984

+0

No hay problema, amigo! Eso es porque estoy totalmente centrado en las primeras preguntas del Código EF. Espero que empieces a usarlo también, ya que todavía veo el archivo EDMX en tu pregunta :) –

Cuestiones relacionadas