2010-05-04 5 views
0

Quelqu'un peut-il me aider comment puis-je valider la transactionvalidation des transactions d'ouverture vb.net

exemple:

transaction = mySqlConn.BeginTransaction(IsolationLevel.ReadCommitted) 

S'il y a encore une transaction ouverte, le code ci-dessus ignorer .. Comment faire Je sais si une transaction n'a pas encore été validée avant d'ouvrir une nouvelle transaction pour éviter la transaction imbriquée?

Répondre

1

Avez-vous regardé en utilisant System.Transactions.TransactionScope? Il est conçu pour gérer ce type de scénario implicitly sans avoir à écrire de code personnalisé. Si vous souhaitez utiliser la gestion des transactions explicite sans utiliser System.Transactions, vous devrez passer votre objet de transaction (ou le rendre disponible en quelque sorte) et vous devrez décider quand lancer une transaction. par exemple. vérifiez si SqlTransaction est null et si c'est le cas, démarrez une transaction sinon utilisez simplement la transaction existante.

Vous pourriez faire quelque chose comme ça (Gestion des erreurs pour transaction.Rollback() est omis):

using (SqlConnection connection = new SqlConnection(connectionString)) 
{ 
    connection.Open(); 
    SqlTransaction transaction = null; 

    DoSomething(connection, ref transaction); 
    DoSomethingElse(connection, ref transaction); 

    transaction.Commit(); 
} 

public void DoSomething(SqlConnection connection, ref SqlTransaction transaction) 
{ 
    SqlCommand command = connection.CreateCommand(); 
    transaction = GetTransaction(connection, transaction); 

    command.Connection = connection; 
    command.Transaction = transaction; 

    ... 
} 

public void DoSomethingElse(SqlConnection connection, ref SqlTransaction transaction) 
{ 
    ... 
} 

public SqlTransaction GetTransaction(SqlConnection connection, SqlTransaction transaction) 
{ 
    if (transaction == null) 
    { 
     transaction = connection.BeginTransaction(IsolationLevel.ReadCommitted); 
    } 

    return transaction; 
} 

Mais vous habituellement juste créer votre transaction et de le transmettre à d'autres méthodes avec la compréhension que avait déjà été initialisé et est sûr à utiliser.

+0

comment puis-je vérifier si la transaction est nulle? – Mark

Questions connexes