¿Qué hace DbConnection.EnlistTransaction?¿Qué hace DbConnection.EnlistTransaction?
Respuesta
DbConnection.EnlistTransaction
permite:
- Junto a la conexión a un
System.Transactions.Transaction
. Tiene algunas limitaciones:- Si la conexión ya está participando en una transacción "local" (
System.Data.Common.DbTransaction
), puede fallar con una excepción (parece depender de la aplicación concreto conexión: Firebird 2 hace ninguna excepción tiro en tales situación,SqlConnection
y probablemente la mayoría de los otros lo tiran). - Si la conexión ya se ha unido a otra
System.Transactions.Transaction
, y esta otra transacción aún está activa, fallará con una excepción. - Unirse a la misma transacción repetidamente es compatible, al menos por
SqlConnection
,OleDbConnection
yOdbcConnection
.
Puede fallar si la conexión tiene algunos recursos actualmente en uso, como ser usado por un lector de datos abierto. (Este caso parece una comprobación demasiado temprana en la implementación interna de esas conexiones, hecho antes de darse cuenta de que ya se ha unido la transacción suministrada).
Otras implementaciones deDbConnection
pueden diferir.
- Si la conexión ya está participando en una transacción "local" (
- Dejando una transacción en la que se enganchó la conexión, siempre que la transacción no esté más activa. (De lo contrario, intentar usar la conexión puede fallar con una excepción, al menos con
OdbcConnection
). Suministrenull
como una transacción para esto.
Tenga en cuenta que algunas conexiones no son compatibles con esto, comoSqlCeConnection
, que arroja unNullReferenceException
, ySQLiteConnection
(al menos hasta v1.0.105), que arroja unArgumentNullException
.
Se requiere dejar una transacción después de su finalización si desea usar la conexión para otras operaciones sin unirla en otra transacción. Algunas conexiones parecen dejar automáticamente la transacción, otras parecen no.
DbConnection.EnlistTransaction
se usa generalmente con System.Transactions.Transaction.Current
. No es necesario usarlo si la conexión se adquiere (abre) dentro de un TransactionScope
: en tal caso, la conexión se enlista automáticamente en la transacción actual (a menos que su cadena de conexión dicte lo contrario con enlist=false
).
Le permite coordinar transacciones entre conexiones múltiples. Una conexión se alistará automáticamente en una transacción si usa TransactionScope. De lo contrario, tienes que hacer el alistamiento con una transacción existente.
El alistamiento automático está garantizado solo si la conexión se adquiere dentro del alcance de la transacción. Si se adquiere afuera, y luego se usa dentro, no se alistó. (Al menos lo he visto con una conexión que primero se adquirió bajo otro alcance de transacción: para usarlo con el siguiente (después de la primera finalización del alcance), se requería que explícitamente lo alistara). –
- 1. ¿Qué hace [:]?
- 2. ¿Por qué hace esto lo que hace?
- 3. ¿Qué hace "make check"?
- 4. ¿Qué hace waitpid()?
- 5. ¿Qué hace aspnet_regiis.exe
- 6. ¿Qué hace este código?
- 7. ¿Qué hace stopLoading() realmente?
- 8. AutoFac: ¿Qué hace PropertyWiringFlags.AllowCircularDependencies?
- 9. ¿Qué hace este script?
- 10. ¿Qué hace @synchronized()?
- 11. ¿Qué hace document.domain = document.domain?
- 12. ¿Qué hace L?
- 13. ¿Qué hace -XX: MaxPermSize?
- 14. ¿Qué hace? ...: ... ¿hacer?
- 15. ¿Qué hace '@_' en Perl?
- 16. ¿Qué hace Application.Run()?
- 17. ¿Qué hace un IISReset?
- 18. ¿Qué hace ReliabilityContractAttribute?
- 19. ¿Qué hace Html.HiddenFor?
- 20. Android - ¿Qué hace adapter.notifyDataSetInvalidated?
- 21. ¿Qué hace pg_escape_string exactamente?
- 22. ¿Qué hace [STAThread]?
- 23. ¿Qué hace testAndroidTestCaseSetUpProlyly
- 24. ¿Qué hace fork = "true"?
- 25. ¿Qué hace mod_pagespeed?
- 26. ¿Qué hace __sync_synchronize?
- 27. ¿Qué hace exactamente Panel.IsItemsHost?
- 28. ¿Qué hace^operador?
- 29. ¿Qué hace mod_auth_passthrough?
- 30. ¿Qué hace HTML.Raw?
¿Mirar los documentos? http://msdn.microsoft.com/en-us/library/system.data.common.dbconnection.enlisttransaction.aspx – DaveHogan
No preguntaría aquí antes de comprobar allí ... –
Los documentos, como se publicó anteriormente, lo describen perfectamente bien bajo "Observaciones". – DaveHogan