2011-01-20 10 views
25

Es código de trabajo;Incluye varios niveles en CodeFirst - EntityFrameWork

IQueryable<Product> productQuery = ctx.Set<Product>().Where(p => p.Id == id).(Include"Contexts.AdditionalProperties.Field"); 

Pero usted sabe que no puede producir error de compilación tiempo si hicimos error en la declaración de cadena en "Contexts.AdditionalProperties.Field"

me gustaría escribir código de abajo;

IQueryable<Product> productQuery = ctx.Set<Product>().Where(p => p.Id == id).Include(p => p.Contexts); 

Pero la declaración anterior no podía dar la oportunidad de definir AdditionalProperties and Field.

¿Qué deberíamos hacer?

Me gustaría escribir como más de uno para consultas de compilación.

Gracias.

Respuesta

43

Si AdditionalProperties es una sola referencia a otro objeto:

using System.Data.Entity; 
... 
IQueryable<Product> productQuery = ctx.Set<Product>() 
     .Include(p => p.Contexts.AdditionalProperties.Field) 
     .Where(p => p.Id == id); 


Si AdditionalProperties es una colección a continuación, puede utilizar la Seleccionar método:

IQueryable<Product> productQuery = ctx.Set<Product>() 
     .Include(p => p.Contexts.AdditionalProperties.Select(a => a.Field)) 
     .Where(p => p.Id == id); 

Don no se olvide de importar System.Data.Enti ty namespace en su archivo de clase!

+1

Me lo ganaste;) –

+0

Tengo que decirte que no era * un juego justo ... Desde que respondí a esta pregunta hace unos meses aquí. ¡Lo siento amigo! –

+0

¡Gracias por la respuesta rápida! ¿Cómo puedo agregar otro contion para AdditionalProperties que es un objeto de tipo List <>? –

Cuestiones relacionadas