none
Como usar sqlquery dentro de un metodo RRS feed

  • Pregunta

  • Muy buenos dias a todos.

    la verdad siempre tropiezo con algo nuevo y esta vez que quiero usar EF se que va a ser normal pero intento hacer para mostrarles y luego uds. me pueda ayudar

    tengo un metodo

    public static Producto ListaProducto(int Id)
            {
    
                using(GourmetEntities db = new GourmetEntities())
                {
                    //return db.Database.SqlQuery<Producto>("sp_CargarPictureBox @p0", Id).SingleOrDefault();
                    //Database.SqlQuery<db>("storedProcedureName",params);
                     var lista = db.tblProductoes.SqlQuery("SELECT * FROM dbo.tblProducto").ToList();
                    //foreach (var item in lista)
                    //{
                    //    return (Producto)item;
                    //}
                }
                
            }

    me sale un error y me dice esto

    se que debo devolver con Return, pero mi pregunta como o que debo hacer porque si pongo 

    Return item denttro de foreach sigue saliendo el error entonces como debo hacer para que pueda resolver este problema

    por favor

    Gracias

    Roberto

    viernes, 6 de marzo de 2020 15:16

Respuestas

Todas las respuestas

  • Hola

    primero

     var lista = db.tblProductoes.SqlQuery("SELECT * FROM dbo.tblProducto").ToList();

    con est consulta retornas una lista de <Productos>

    y tu mandas in Id ytu funcion solo pide un Producto

    usando expreciones lambda en ves de usar where 'Id'=Id

     var _producto= db.tblProductoes.FirstOrDefault(producto => producto.Id =Id);

    de esta mnera solo te regresa un solo Producto

     return _producto

    viernes, 6 de marzo de 2020 16:13
  • Tal como tienes declarado el método, se espera que devuelvas un único valor de la lista. Hay muchas formas de hacerlo, perola más típica sería FirstOrDefault o alguna otra de sus variantes. De hecho, ya tienes una de ellas entre comentarios dentro de tu código. Esto debería funcionar desde el punto de vista de "no todas las rutas devuelven un valor" (con independencia de que contenga algún otro error por motivos diferentes, en cuyo caso tendríamos que ver cuál es el mensaje de error):

            public static Producto ListaProducto(int Id)
            {
                using(GourmetEntities db = new GourmetEntities())
                {
                    return db.Database.SqlQuery<Producto>("sp_CargarPictureBox @p0", Id).SingleOrDefault();
                }
            }

    viernes, 6 de marzo de 2020 16:17
    Moderador
  • gracias a todos ya voy entendiendo

    ahora miremos esta figura, y el mensaje de error en lo subrrayado

    qQue es lo que estoy haciendo mal por favor.

    Gracias

    Roberto

    viernes, 6 de marzo de 2020 19:07
  • por favor me gustaría que vean la diferencia cuando lo hago con 

    public static Producto ListaProducto()
            {
               
                using(GourmetEntities db = new GourmetEntities())
                {
    
                     var a = db.tblProductoes.SqlQuery("SELECT * FROM dbo.tblProducto").ToList();
                    ////return db.Database.SqlQuery<Producto>("sp_CargarPictureBox @p0", Id).SingleOrDefault();
                    ////Database.SqlQuery<db>("storedProcedureName",params);
                    //Return db..SqlQuery("SELECT * FROM dbo.tblProducto").FirstOrDefault();
                    
                }
               
            }

    me pide que retorne un valor que debo de hacer  por favor

    Gracias.

    Roberto

    viernes, 6 de marzo de 2020 19:17
  • Hola

     var a = db.tblProductoes.SqlQuery("SELECT * FROM dbo.tblProducto").ToList();

    te retorna in List<Propducto>

    y tu funcion

    public static Producto ListaProducto()

    solo un Producto

    ademas devieras tener un

    return a;

    y tu funcion deviese ser

    public static List<Producto> ListaProducto()

    viernes, 6 de marzo de 2020 21:39
  • La verdad no lo entiendo mucho.

    tengo muchos problemas con las conversiones la verdad mira esta imagen

    por favor haber que mas puedo hacer

    Gracias

    Roberto

    viernes, 6 de marzo de 2020 22:29
  • Hola

    intenta con esto

    public static List<Producto> ListaProducto()
            {
               
                using(GourmetEntities db = new GourmetEntities())
                {
    
                     var a = db.tblProductoes.SqlQuery("SELECT * FROM dbo.tblProducto").ToList();
                    return a;
                    
                }
               return new List<Producto>();
            }

    viernes, 6 de marzo de 2020 22:37
  • Gracias estimado pero no puedo es problema de conversion

    viernes, 6 de marzo de 2020 23:06
  • lee el encabezado

    tu tienes

    public static Producto ListaProducto()

    y debe se

    public static List<Producto> ListaProducto()

    ves la diferencia

    sábado, 7 de marzo de 2020 0:04