none
Editar con EF RRS feed

  • Pregunta

  • Buenas noches a todos en mi afan de querer aprender esto de EF me veo en problemas. por ejemplo este

    tengo mi clase Original

    public partial class tblProducto
        {
            public int Id { get; set; }
            public int IdCategoria { get; set; }
            public int IdUnidadMedida { get; set; }
            public string Codigo { get; set; }
            public string Descripcion { get; set; }
            public Nullable<decimal> PrecioVenta { get; set; }
            public Nullable<decimal> Stock { get; set; }
            public System.DateTime FechaCreado { get; set; }
            public byte[] Imagen { get; set; }
            public int IdUsuario { get; set; }
        
            public virtual tblCategoria tblCategoria { get; set; }
            public virtual tblUnidad tblUnidad { get; set; }
            public virtual tblUsuario tblUsuario { get; set; }
        }

    ahora tengo una clase llamada Producto que hereda de tblproducto

    y dentro de la clase Producto tengo este método, que es justo lo que vi en una pagina de internet pero la verdad no me funciona

    public static Producto EditarProducto(int id)
            {
                Producto producto = new Producto();
                using (GourmetEntities db = new GourmetEntities())
                {
                    var prod = (from pr in db.tblProductoes
                                where pr.Id == id
                                //select
                                //new
                                //{
                                //    pr.Codigo,
                                //    pr.Descripcion,
                                //    pr.FechaCreado,
                                //    pr.Id,
                                //    pr.IdCategoria,
                                //    pr.IdUnidadMedida,
                                //    pr.IdUsuario,
                                //    pr.Imagen,
                                //    pr.PrecioVenta,
                                //    pr.Stock
                                //}).ToList();
    
                                select pr).Single();
                    producto.Codigo = prod.Codigo;
                    producto.Descripcion = prod.Descripcion;
                    producto.FechaCreado = prod.FechaCreado;
                    producto.Id = prod.Id;
                    producto.IdCategoria = prod.IdCategoria;
                    producto.IdUnidadMedida = prod.IdUnidadMedida;
                    producto.IdUsuario = prod.IdUsuario;
                    producto.Imagen = prod.Imagen;
                    producto.PrecioVenta = prod.PrecioVenta;
                    producto.Stock = prod.Stock;
                    return producto;
    
                }
    
    
            }

    ahora quiero mostrarlo en un dataGridView.datasource de esta manera

    dataGridView1.DataSource = Producto.EditarProducto(1);

    pero no me muestra nada, por favor me puede alguien explicar un poquito del porque de mi error.

    el original es este metodo

    public static Personas ObtenerId(int id)
          {
              Personas persona = new Personas();
              using (DatabaseEntities bd = new DatabaseEntities())
              {
                  var regis = (from p in bd.Personas
                                where p.Id==id
                                select p).Single();
     
                  persona.Id = regis.Id;
                  persona.Nombre = regis.Nombre;
                  persona.Apellido = regis.Apellido;
                  persona.Edad = regis.Edad;
     
                  return persona;
              }
          }
    

    y como lo implementa en el formulario es este

    private int id;
          public Form3(int idempleado)
          {
              InitializeComponent();
              id = idempleado;
          }
     
          private void Form3_Load(object sender, EventArgs e)
          {
              // se carga el registro que se quiere editar
               cbbprofesion.SelectedIndex = 0;
               Personas persona = Datos.ObtenerId(id);
               id = persona.Id;
               txtnombre.Text = persona.Nombre;
               txtapellido.Text = persona.Apellido;
               txtedad.Text = persona.Edad.ToString();         
          }
     
          private void btnaceptar_Click(object sender, EventArgs e)
          {
              Datos.Editar(id,txtnombre.Text,txtapellido.Text,Convert.ToInt32(txtedad.Text),cbbprofesion.SelectedItem.ToString());
              MessageBox.Show("Registro Actualizado...", "Actualizar Registro");
              this.Close();
          }

    gracias

    Roberto

    lunes, 16 de marzo de 2020 0:21

Respuestas

  • hola

    >>ahora quiero mostrarlo en un dataGridView.datasource de esta manera

    Estas retornand los datos de un solo productos, eso no se puede mostrar en un grid, si quieres hacerlo devuelve una lista de productos

    huberias dejado el ToList() en lugar de cambiarlo al ToSingle()

    Lo que no tiene sentido es mostrar una sola entidad de productos en un grid en donde se supone muestres una lista, si vas a filtrar por Id para mostrar solo uno usa controles textbox para visualizar cada dato

    public static List<Producto> EditarProducto(int id)
    {
    	Producto producto = new Producto();
    	using (GourmetEntities db = new GourmetEntities())
    	{
    		var prodList = (from prod in db.tblProductoes
    					where prod.Id == id
    					new Producto(){
    					   Codigo = prod.Codigo;
    					   Descripcion = prod.Descripcion;
    					   FechaCreado = prod.FechaCreado;
    					   Id = prod.Id;
    					   IdCategoria = prod.IdCategoria;
    					   IdUnidadMedida = prod.IdUnidadMedida;
    					   IdUsuario = prod.IdUsuario;
    					   Imagen = prod.Imagen;
    					   PrecioVenta = prod.PrecioVenta;
    					   Stock = prod.Stock;
    					}).ToList();
    
    	   
    	   return prodList;
    
    	}
    }

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    lunes, 16 de marzo de 2020 1:58