Transactions (LINQ to SQL)
Mise à jour : November 2007
LINQ to SQL prend en charge trois modèles de transaction distincts. Ces modèles sont présentés ci-dessous dans l'ordre d'exécution des contrôles.
Transaction locale explicite
Lorsque vous appelez SubmitChanges, si la propriété Transaction a pour valeur une transaction (IDbTransaction), l'appel de SubmitChanges est effectué dans le contexte de la même transaction.
Il vous appartient de valider ou de restaurer la transaction une fois qu'elle s'est correctement exécutée. La connexion qui correspond à la transaction doit être identique à celle utilisée pour construire le DataContext. L'utilisation d'une autre connexion lève une exception.
Transaction distribuable explicite
Vous pouvez appeler des API LINQ to SQL (y compris, mais de manière non limitative, SubmitChanges) dans la portée d'un type Transaction actif. LINQ to SQL détecte que l'appel est dans la portée d'une transaction et ne crée pas de nouvelle transaction. LINQ to SQL évite également de fermer la connexion dans ce cas. Vous pouvez effectuer une requête et exécuter SubmitChanges dans le contexte de ce type de transaction.
Transaction implicite
Lorsque vous appelez SubmitChanges, LINQ to SQL vérifie si l'appel se trouve dans la portée d'une Transaction ou si la propriété Transaction (IDbTransaction) a pour valeur une transaction locale démarrée par l'utilisateur. S'il ne détecte aucune transaction, LINQ to SQL démarre une transaction locale (IDbTransaction) et l'utilise pour exécuter les commandes SQL générées. Lorsque toutes les commandes SQL ont été exécutées correctement, LINQ to SQL valide la transaction locale et les retours.