Capitulo 3 - Gestionando Transacciones ADO - Net - C#

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 6

Capítulo 3

Gestionando Transacciones con


ADO.NET

Objetivo

Al finalizar el capítulo, el alumno:


 Reconoce cuándo usar transacciones y la forma de manejo de transacciones
a implementar.
 Implementa transacciones locales y distribuidas.

Temas

1. Introducción a las transacciones.


2. Manejando transacciones locales con ADO.NET.
3. Transacciones con System.Transaction .

.Net 4.5.1 Application Developer Visual Studio 2013 – C#


Gestionando Transacciones con ADO.NET 28

1. Introducción a las transacciones

Una transacción es una unidad de trabajo que contiene un conjunto de operaciones; si


todas las operaciones son exitosas, entonces, la transacción termina de completarse,
pero si una operación falla, entonces toda la transacción también lo hará.
Se usan transacciones para asegurar la consistencia e integridad de una base de
datos. Si una transacción es exitosa entonces todas las modificaciones de datos
realizadas durante la transacción se hacen permanentes mediante un Commit. Si se
comete un error durante la transacción, se pueden deshacer las modificaciones de
datos en esa transacción, a través de un Roll Back.

El .NET Framework brinda soporte para transacciones locales y transacciones


distribuidas, las cuales se definen de la siguiente manera:

 Transacciones locales. Una transacción local trabaja sobre una única fuente
de datos. Las transacciones locales son controladas por la fuente de datos,
son eficientes y fáciles de manejar.

 Transacciones distribuidas. Una transacción distribuida se realiza sobre


múltiples fuentes de datos. Las transacciones distribuidas permiten
incorporar distintas operaciones, las cuales ocurren en diferentes sistemas,
en una acción atómica que puede ser exitosa o fallar completamente.

Una transacción tiene las siguientes propiedades:

 Atomicidad. Este término indica que un cambio en el estado de una


transacción se produce totalmente o no se produce. Una transacción es un
conjunto de operaciones, las cuales se ejecutan en su totalidad o
simplemente, no se ejecuta ninguna.
Gestionando Transacciones con ADO.NET 29

 Consistencia. Este término indica que una transacción es una


transformación correcta del estado. Asimismo, asegura que si hay un
cambio en la base de datos, este sea de un estado consistente a otro estado
consistente. Para ello, es necesario que la transacción sea un programa
correcto.

 Aislamiento. Este término indica que aunque las transacciones se ejecuten


simultáneamente, cada transacción percibirá que las otras se ejecutan antes
o después que ella, pero no en paralelo.

 Durabilidad. Este término indica que en cuanto se ejecute correctamente


una transacción (se valida), cambia el estado para resistir cualquier error y el
nuevo estado será persistente en el tiempo.

Manejando transacciones con SQL Server

A nivel de base de datos, por ejemplo con un MS SQL Server, se pueden manejar
transacciones locales con las instrucciones de Transact-SQL

 Begin Transaction. Esta instrucción indica al motor de base de datos, que se


está iniciando una transacción, la cual puede estar compuesta por una o más
sentencias SQL.
 Commit Transaction. Esta instrucción debería ejecutarse después de que todas
las sentencias SQL de la transacción se han realizado con éxito.
 Rollback Transaction. Esta instrucción se debe ejecutar si alguna de las
sentencias SQL de la transacción, no se ejecutó correctamente.

Estas instrucciones deben ejecutarse sobre una misma conexión de base de datos.
Gestionando Transacciones con ADO.NET 30

2. Manejando transacciones locales con ADO.NET

Cada proveedor de datos del .NET Framework ofrece una clase destinada al
tratamiento de transacciones. Esta clase implementa la interface IDbTransaction, la
cual contiene métodos para crear y ejecutar transacciones sobre una fuente de datos.

Las siguientes son las clases transaccionales presentes en el .NET Framework:

 System.Data.SqlClient.SqlTransaction
 System.Data.OleDbClient.OleDbTransaction
 System.Data.Odbc.OdbcTransaction

Cada transacción está asociada a una conexión en particular. Para comenzar una
transacción sobre una conexión, se debe realizar un llamado al método
BeginTransaction, este método está disponible dentro de un objeto del tipo
Connection. El método BeginTransaction devuelve un objeto del tipo Transaction.

Para realizar operaciones dentro de una transacción, se debe configurar la propiedad


Connection de un objeto Command, de tal forma, que haga referencia que está
ejecutando la transacción, al objeto Connection; luego, se debe establecer el valor de
la propiedad Transaction del objeto Command de tal forma, que haga referencia al
objeto Transaction, el cual es generado por el BeginTransaction.

Si todas las sentencias SQL ejecutadas sobre una misma transacción se completan
con éxito, entonces se debe hacer un llamado al método Commit del objeto
Transaction. Si algún comando falla, entonces se debe hacer un llamado al método
RollBack del objeto Transaction.
Gestionando Transacciones con ADO.NET 31

3. Transacciones con System.Transaction

El .NET Framework incluye el namespace System.Transactions, el cual proporciona


soporte para transacciones distribuidas, que se ejecutan sobre administradores de
transacciones relacionados a fuentes de datos o colas de mensajes (Message
Queue). De igual forma, la clase TransactionScope, la cual se encuentra dentro del
namespace System.Transactions, permite crear y administrar transacciones
distribuidas.

Para crear y ejecutar transacciones distribuidas, se debe instanciar un objeto de la


clase TransactionScope y especificar si se desea crear un nuevo contexto de
transacción o enlistar las transacciones en un contexto de transacción ya existente.
Gestionando Transacciones con ADO.NET 32

Laboratorio nº 3

Crear una aplicación que realice una transacción local usando ADO.NET y SQL
Server.

También podría gustarte