Compartir a través de


Compatibilidad con transacciones

LINQ to SQL admite tres modelos de transacción distintos. A continuación se enumeran estos modelos por orden de comprobaciones realizadas.

Transacción local explícita

Cuando se llama a SubmitChanges, si la propiedad Transaction se establece en una transacción (IDbTransaction), la llamada a SubmitChanges se ejecuta en el contexto de la misma transacción.

Es su responsabilidad confirmar o revertir la transacción después de su correcta ejecución. La conexión que corresponde a la transacción debe coincidir con la conexión utilizada para construir DataContext. Si se utiliza una conexión diferente, se inicia una excepción.

Transacción distribuible explícita

Puede llamar a las API de LINQ to SQL (incluidas, entre otras, SubmitChanges) en el ámbito de un objeto Transaction activo. LINQ to SQL detecta que la llamada está en el ámbito de una transacción y no crea una nueva transacción. LINQ to SQL también impide el cierre de la conexión en ese caso. Puede ejecutar consultas y el método SubmitChanges en el contexto de este tipo de transacción.

Transacción implícita

Al llamar a SubmitChanges, LINQ to SQL comprueba si la llamada se encuentra en el ámbito de una Transaction o si la propiedad Transaction (IDbTransaction) está establecida en una transacción local iniciada por el usuario. Si no encuentra ninguna de estas transacciones, LINQ to SQL inicia una transacción local (IDbTransaction) y la usa para ejecutar los comandos SQL generados. Cuando se han completado todos los comandos SQL correctamente, LINQ to SQL confirma la transacción local y devuelve un valor.

Consulte también