none
The Include path expression must refer to a navigation property defined on the type RRS feed

  • Pregunta

  • Hola:

     Tengo un problema al querer recuperar una entidad relacionada, esta es la imagen del diagrama de la base de datos.

     Una Compañía puede tener de 1 a N usuarios, entonces quisiera recuperar todos los usuarios de una compañía en especifica incluyendo el Rol al que le corresponde cada usuario, estoy usando la siguiente consulta linq:

                        var xxx = (from x in context.Usuarios
                            .Include(x => x.Compañias.Where(y => y.CompañiaId == companyId))
                            .Include(x => x.Rol)
                                   select new UsuarioDto()
                                   {
                                       UsuarioId = x.UsuarioId,
                                       UserName = x.UserName,
                                       FechaRegistro = x.FechaRegistro,
                                       Email = x.Email,
                                       Status = x.Status,
                                       Comentarios = x.Comentarios,
                                       FechaBloqueo = x.FechaBloqueo,
                                       RolId = x.RolId,
                                       RolName = x.Rol.Nombre,
                                   });
    
                        return xxx;

     Pero al ejecutarla me retorna la siguiente excepción:

    System.Exception: System.ArgumentException: The Include path expression must refer to a navigation property defined on the type. Use dotted paths for reference navigation properties and the Select operator for collection navigation properties.

    Esta son las entidades y sus relaciones.

    public class Usuario
    {
        public Usuario()
        {
            Compañias = new List<Compañia>();
        }
    
        public int UsuarioId { get; set; }
    
        public int RolId { get; set; }
    	
    	//resto de propiedades
    
        public virtual Rol Rol { get; set; }
    
        public virtual ICollection<Compañia> Compañias { get; set; }
        
    }
    
    public class Compañia
    {
        public int CompañiaId { get; set; }
    
        public string RazonSocial { get; set; }
    
        public string Rfc { get; set; }
    
        public virtual ICollection<Usuario>  Usuarios { get; set; }
    }
     Agradezco cualquier información que pudieran ofrecerme.


    Saludos desde Monterrey, Nuevo León, México!!!

    • Cambiado webJose sábado, 26 de marzo de 2016 16:22
    sábado, 26 de marzo de 2016 14:39

Respuestas

  • no puedes usar un Where() dentro de un Include()

    var xxx = from x in context.Usuarios
    			.Include(x => x.Compañias)
    			.Include(x => x.Rol)
    		   where x.Compañias.Any(y.CompañiaId == companyId)
    		   select new UsuarioDto()
    		   {
    			   UsuarioId = x.UsuarioId,
    			   UserName = x.UserName,
    			   FechaRegistro = x.FechaRegistro,
    			   Email = x.Email,
    			   Status = x.Status,
    			   Comentarios = x.Comentarios,
    			   FechaBloqueo = x.FechaBloqueo,
    			   RolId = x.RolId,
    			   RolName = x.Rol.Nombre,
    		   };

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    sábado, 26 de marzo de 2016 15:21

Todas las respuestas

  • no puedes usar un Where() dentro de un Include()

    var xxx = from x in context.Usuarios
    			.Include(x => x.Compañias)
    			.Include(x => x.Rol)
    		   where x.Compañias.Any(y.CompañiaId == companyId)
    		   select new UsuarioDto()
    		   {
    			   UsuarioId = x.UsuarioId,
    			   UserName = x.UserName,
    			   FechaRegistro = x.FechaRegistro,
    			   Email = x.Email,
    			   Status = x.Status,
    			   Comentarios = x.Comentarios,
    			   FechaBloqueo = x.FechaBloqueo,
    			   RolId = x.RolId,
    			   RolName = x.Rol.Nombre,
    		   };

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    sábado, 26 de marzo de 2016 15:21
  • Gracias Leandro.

    Saludos desde Monterrey, Nuevo León, México!!!

    sábado, 26 de marzo de 2016 15:31