Uso de transacciones en C#


 ¿Que son las transacción?

Las transacciones  se utilizan cuando se desea enlazar varias tareas para que se ejecuten como una sola unidad de trabajo. Por ejemplo, imagine que una aplicación realiza dos tareas. Primero, actualiza una tabla con información de pedidos. Luego, actualiza una tabla que contiene la información de inventario, cargando en cuenta los elementos pedidos. Si alguna de las tareas da error, ambas actualizaciones se revierten  Fuente: MSDN

Como buena practica de Desarrollo es importante utilizar estas cuando realizaremos un cambio en 2 tablas en adelante ejecutando un mismo método o acción de un botón.

Podemos realizar transacciones en nuestro lenguaje de programacion C# o visual basic.net... o En la base de dato con procedimientos almacenados.

Nota
Las transacciones son más eficientes cuando se realizan en el servidor. Si trabaja con una base de datos de SQL Server que hace uso masivo de transacciones explícitas, debería estudiar la posibilidad de escribirlas como procedimientos almacenados mediante la instrucción BEGIN TRANSACTION de Transact-SQL. Para obtener más información acerca de la realización de transacciones de servidor, vea los Libros en pantalla de SQL Server. Fuente: MSDN

Las transacciones se manejan con los bloques try catch o manejador de errores. Si en algunas de las tablas sucede un error que impida guardar.   este entra en catch. Reviertiendose todos los cambios automáticamente.

Errores comunes:

  • Falla en la conexion
  • Error por tamaño de campo
  • Errores por tipo de dato
  • Cierre de sesion en aplicaciones web cuando se expira
  • Errores por usuario mal intencionados

Ejemplos:

Entity Framework 6  Lenguaje C#


OSBContext db = new OSBContext();
string vlserror;
        
                try
                {
                    using (var transaction = db.Database.BeginTransaction())
                    {

               var editar1 = (from p in db.tabla1
                                              where p.Id == vliid
                                              select p).Single();
                                editar.value = true;
                                db.SaveChanges();

               var editar2 = (from p in db.tabla2
                                              where p.Id == vliid
                                              select p).Single();
                                editar.value = true;
                                db.SaveChanges();

                       transaction.Commit();
                    }
                        }
                catch (Exception ex)
                {

                    vlserror = ex.Message;
                }









Comentarios

Entradas populares de este blog

Que es un servidor dedicado?

Como quitar Powered by osCommerce de Oscomerce