Principales respuestas
Editar con EF

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
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- Marcado como respuesta Roberto C. Melgar lunes, 16 de marzo de 2020 12:43