2011-06-27 23 views
7

Estoy desarrollando una aplicación que se comunica con una base de datos SQL Server 2005 para ejecutar algunos procedimientos almacenados. Mi cliente exige que todas las transacciones se administren en el lado C# y no en el servidor SQL, por lo que estoy usando System.Transactions.TransactionScope al acceder a la base de datos. Sin embargo, acabo de ver el tipo de datos System.Transactions.Transaction, y estoy confundido ... ¿Cuáles son los principales pros/contras de cada tipo? ¿Cuál debería usar?Diferencia entre transacción y TransactionScope

Tenga en cuenta que también debo usar el Bloque de aplicaciones de acceso a datos de Enterprise Library.

+1

Ver también http://stackoverflow.com/questions/224689/transact ions-in-net –

+0

Parece una repetición de http://stackoverflow.com/questions/542525/transactionscope-vs-transaction-in-linq-to-sql – Dave

Respuesta

9

De MSDN:

La clase TransactionScope proporciona una forma sencilla para marcar un bloque de código como participar en una transacción, sin necesidad de interactuar con el propio transacción. Un alcance de transacción puede seleccionar y administrar la transacción ambiente automáticamente. Debido a su facilidad de uso y eficiencia, se recomienda que use la clase de TransactionScope al desarrollar una transacción aplicación. Al crear instancia de TransactionScope, el gerente de la transacción determina qué transacción para participar en. Una vez determinado, el alcance siempre participa en esa transacción . La decisión se basa en dos factores: si una transacción de ambiente está presente y el valor del parámetro TransactionScopeOption en el constructor. La transacción ambiente es la transacción dentro de la cual se ejecuta su código. Usted puede obtener una referencia a la transacción ambiental llamando a la propiedad estática actual de la clase Transacción .

Usted puede leer más sobre esto aquí:

http://msdn.microsoft.com/en-us/library/ms172152(v=vs.90).aspx

http://msdn.microsoft.com/en-us/library/system.transactions.transactionscope(v=vs.90).aspx

Grande (un poco antiguo) artículo acerca de la transacción en el .NET 2,0

http://msdn.microsoft.com/en-us/library/ms973865.aspx

Cuestiones relacionadas