protected void btnActualizar_Click(object sender, EventArgs e)
{
Producto p = new Producto();
try
{
using (DataClassesDataContext DB = new DataClassesDataContext())
{
p = DB.Productos.Single(pe => pe.IDProducto == 3);
p.Codigo = "234";
DB.SubmitChanges();
}
}
catch (Exception ex)
{
Response.Write(ex.Message);
}
}
El uso correcto sería que la actualización se lleve a cabo en un método dentro de una clase dedicada a este tipo de acciones.
Para llevar a cabo una actualización sin tener que pasar todos los parametros a modificar de la entidad Producto, hacemos uso de los métodos Attach() y Refresh() de LINQ.
El método Attach() como su nombre lo dice, adjunta una entidad que se encuentra fuera del contexto y lo liga al contexto actual, en este caso el DataContext.
El método Refresh() realiza la actualización dependiendo del modo que le sea especificado.
Ejemplo.
protected void btnActualizar_Click(object sender, EventArgs e)
{
Producto p = new Producto();
try
{
p.IDProducto = 3;
p.Codigo = "234";
if (Catalogo.ActualizaProducto(p))
Response.Write("ActualizaciĆ³n exitosa");
}
catch (Exception ex)
{
Response.Write(ex.Message);
}
}
public static bool ActualizaProducto(Producto ProductoModificado)
{
try
{
using (DataClassesDataContext DB = new DataClassesDataContext())
{
Producto ProductoNuevo = new Producto();
ProductoNuevo.IDProducto = ProductoModificado.IDProducto;
DB.Productos.Attach(ProductoModificado, ProductoNuevo);
DB.Refresh(System.Data.Linq.RefreshMode.KeepChanges, ProductoModificado);
DB.SubmitChanges();
return true;
}
}
catch (Exception ex)
{
throw ex;
}
}