2009-05-13 38 views

Respuesta

3

Cuando se trata de transacciones basadas en conexión (IDbTransaction), el rendimiento general debería ser bastante similar, pero al manejarlo en el código .NET, permite abarcar convenientemente múltiples operaciones de base de datos en la misma conexión. Si está realizando la gestión de transacciones dentro de TSQL, realmente debería limitarlo a la única consulta TSQL. Es muy posible que haya un viaje de ida y vuelta adicional para el comienzo/el final, pero eso probablemente no lo lastime.

Es bastante raro (en estos días) escribir manualmente transacciones basadas en TSQL, tal vez si estaba escribiendo algo llamado directamente por el servidor a través de un agente (en lugar de hacerlo desde mi propio código de aplicación).

La diferencia más grande es entre IDbTransaction y TransactionScope ver Transactions in .net para más, pero la versión corta es que TransactionScope es ligeramente más lento (dependiendo del escenario), pero puede abarcar varias conexiones/bases de datos (u otros recursos).

+0

Gracias Marc ... aún quisiera saber por qué uno usaría IDbTransaction cuando puede usar una transacción en un proceso almacenado SQL –

+0

Porque puede querer que IDbTransaction abarque múltiples operaciones atómicas (eso quizás ya exista). No puede hacer eso si las transacciones están dentro del sproc, pero puede hacerlo si solo está basado en la conexión. También es mejor desde un ángulo de separación de preocupaciones: usted transfiere la responsabilidad de transacciones fuera del proceso, cuyo trabajo es actualizar algunos datos (etc.). –

Cuestiones relacionadas