none
Como cargar una tabla (gridwiew) a partir de un List<> utilizando Linq RRS feed

  • Pregunta

  • Estimados,

    Tengo la siguiente consulta:

    Resulta que estoy migrando una aplicación en php a asp.net utilizando entity framwork y aplicando el desarrollo en capas (vista, negocio, datos), pero me salto la duda de como cargar un List<> en una tabla o gridview devuelto por una consulta en Linq.

    El código es el siguiente:

    public List<usuario> GetListaUsuarios(){

    var db = new CapaDeDatos.dbCajeroEntities(); 

    var listaUsuario = new List<usuario>();

    listaUsuario = (from u in db.usuario select u).Tolist();

    return listaUsuario;

    }

    Al ejecutar el debug, los datos son recogidos y todo funciona perfectamente. Mi duda es como tomar los datos en el return usuario; y cargarlos en la vista de la aplicación con una tabla (gridview).

    Saludos!!!!




    • Editado Carlos_cva1 miércoles, 9 de septiembre de 2015 15:43
    miércoles, 9 de septiembre de 2015 13:50

Respuestas

  • hola

    >>LayerEntity  En esta capa es donde a partir del EF

    en realidad esta no es una layer, da soporte a la misma capa de datos

    imagino tiene las POCO generadas con los .tt del edmx

    >>es mostrar en el Site.Master de la aplicación el resultado del List<usuario> proveniente del metodo GetListaUsuarios() ..

    en ese caso la entidad que llega a la UI es la misma ya que al separarlo en un proyecto de entidades puedes referenciarlo y recibir la lista

    alli no necesitas convertir, la capa de negocio seria un pasamanos

    public List<usuario> GetListaUsuarios(){ var db = new CapaDeDatos.dbCajeroEntities(); return db.usuario.ToList(); }

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    miércoles, 9 de septiembre de 2015 20:04

Todas las respuestas

  • hola

    entiendo que ese codigo esta en la capa de negocio, no ?

    cuando defines List<usuario> ese "usuario" es la clase que declara EF ? o es una clase que tu creas por fuera

    porque si es otro tipo de entidad deberias convertir de una a otra, podrias hacerlo en el mismo linq o sino usando automapper

    public List<usuario> GetListaUsuarios(){
    
    		var db = new CapaDeDatos.dbCajeroEntities(); 
    
    		var listUser =  db.usuario.Select(u => new usuario(){
    								prop1 = u.prop1,
    								prop2 = u.prop2
    							}).ToList();
    
    		return listUser;
    
    }

    como veras alli al definir el select esta conviertiendo

    Nota: las propiedades sn de ejemplo debes poner las que corresponden

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    miércoles, 9 de septiembre de 2015 14:11
  • Leandro,

    Gracias por tu rápido apoyo, cuando defino List<usuario> me refiero a la clase que el EF declaro automáticamente respecto del modelo de la BD. Corresponde a la clase usuario que contiene todas sus propiedades y atributos tales como int idUsuario, string nombreUsuario, string apellidoUsuario.. etc, todo con sus set y get.

    Respecto de mi duda, ¿es posible pasar el return listaUsuario; de mi método a la vista y separar la información o me es mas conveniente utilizar tu método?

    Lo que necesito es mostrar la información que me retorna la consulta en Linq en algún contenedor de la vista.

    PD: modifique la variable del método para mejor entendimiento.

    Saludos!


    • Editado Carlos_cva1 miércoles, 9 de septiembre de 2015 15:44
    miércoles, 9 de septiembre de 2015 15:41
  • hola

    >>¿es posible pasar el return listaUsuario; de mi método a la vista y separar la información o me es mas conveniente utilizar tu método?

    no se como estas usando EF, si usas Code First puede separar las clases del contexto con lo cual desde el proyecto web podrias referenciar las clases que definen las entidades y trabjar con estas

    si usas un edmx quizas debas separar la generacion de codigo de persistencia de las entidades POCO

    todo estos si quieres usar a misma clase de usuario que define EF en tu UI, para poder asignar la lista al gridview

    ahora bien tambien hay otra forma y es crear clases de transporte para separar las capas y transformar una en otra como comente en la respuesta anterior

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    miércoles, 9 de septiembre de 2015 15:58
  • Leandro:

    Te cuento como estoy realizando el proyecto..

    Lo primero fue crear un proyecto "Aplicación web ASP.NET" 

    Luego dentro de la solución agregue 3 proyectos como Biblioteca de Clases.

    * LayerBLL

     En esta capa está el método para listar todos los usuarios

    * LayerDAL

     En esta capa fue donde se agrego el .edmx 

    * LayerEntity

     En esta capa es donde a partir del EF se importaron todas las clases correspondientes a   cada una de las tablas de la BD.

    Ahora lo que deseo, es mostrar en el Site.Master de la aplicación el resultado del List<usuario> proveniente del metodo GetListaUsuarios() .. 

    Si te confundo con mi poca experiencia te pido disculpas.

    Saludos!


    • Editado Carlos_cva1 miércoles, 9 de septiembre de 2015 19:10
    miércoles, 9 de septiembre de 2015 19:10
  • hola

    >>LayerEntity  En esta capa es donde a partir del EF

    en realidad esta no es una layer, da soporte a la misma capa de datos

    imagino tiene las POCO generadas con los .tt del edmx

    >>es mostrar en el Site.Master de la aplicación el resultado del List<usuario> proveniente del metodo GetListaUsuarios() ..

    en ese caso la entidad que llega a la UI es la misma ya que al separarlo en un proyecto de entidades puedes referenciarlo y recibir la lista

    alli no necesitas convertir, la capa de negocio seria un pasamanos

    public List<usuario> GetListaUsuarios(){ var db = new CapaDeDatos.dbCajeroEntities(); return db.usuario.ToList(); }

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    miércoles, 9 de septiembre de 2015 20:04