Creé una sqlconnection, CN1. Entonces este CN1 se abre. Más adelante en el código hay un workscope. Si ejecuto un comando sql en esta conexión CN1, ¿esto está dentro de la transacción?Es importante abrir una conexión sql en el scopecope
El código se ve así;
SqlConnection cn1 = new SqlConnection();
cn1.Open(); //connection opened when there is no ambient transaction.
...
using(TransactionScope scope = new TransactionScope())
{
SqlCommand cmd; //a typical sql command.
...
cmd.ExecuteNonQuery(); //Is this command within transaction?
...
}
¿hay alguna solución para resolver este problema dentro del scopecope que no sea la conexión abierta sql en la operación transactionoption? ¿Pueden los métodos Enlist ser útiles al respecto? – mkus
mkus, sí puede usar el método de instancia 'SqlConnection'' EnlistTransaction (Transaction.Current); 'para obtener una conexión ya abierta en un alcance de transacción. Por lo tanto, decirlo * DEBE * abrirse dentro de TransactionScope no es cierto, aunque así es como se supone que se utilizará el mecanismo automático. Además, abrir la conexión dentro del alcance ni siquiera garantiza que la conexión se alistó, porque la cadena de conexión podría especificar "Enlist = false". Por lo general, esa opción no está especificada, pero es algo a tener en cuenta y verificar. Ver http://stackoverflow.com/a/2886326/88409 – Triynko