none
Limitar número de registros relacionados que se cargan RRS feed

  • Pregunta

  • Hola

    Tengo dos tipos de entidad: Publicaciones <-(1,1)-----(0,n)-> Comentarios. Me gustaría que al cargar las publicaciones se inicializase la propiedad de navegación Publicacion.Comentarios pero no con todos los comentarios, sino solo con los 3 más recientes. ¿Es posible hacer esto con Entity Framework? Como es de suponer, tengo desactivado el LazyLoading.

    Estoy trabajando con este código, donde _unitOfWork es una instancia de una clase heredera de DbContext, y carga todos los comentarios.

    IQueryable<Publication> query = _unitOfWork.Set<Publication>().Include(p => p.Comments);

    He probado a modificar la expresión lambda que le paso a Include con OrderByDescending(p => p.Date).Take(3) pero da un error en tiempo de ejecución: "ArgumentException : La expresión de ruta de acceso Include debe hacer referencia a una propiedad de navegación definida en el tipo. Use rutas punteadas para hacer referencia a las propiedades de navegación y el operador Select para las propiedades de navegación de colección.\r\nNombre del parámetro: path". Así que obviamente esa no es la forma de hacerlo.

    ¿Alguna idea de cómo conseguir cargar sólo los comentarios más recientes? ¿Qué otra estrategia podría usar?

    Muchas gracias.

    martes, 26 de marzo de 2013 21:20

Todas las respuestas

  • ¿Es posible hacer esto con Entity Framework?

    podrias en lugar de solo crear el IQueryable<> definir una expresion de linq

    var result = from item in _unitOfWork.Set<Publication>().Include(p => p.Comments);

                        let solo3comments = item.Comments.OrderByDescending(p => p.Date).Take(3)

                       select new Publication(){

                            //squi iguals las propeidades de la publicacion

                              Comments = solo3comments

                       };

    o sea creando un nuevo objeto podrias asignar los 3 comentarios de la lista

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    miércoles, 27 de marzo de 2013 0:23