2010-04-26 6 views
0

La connexion à la base de données doit-elle être définie dans un TransactionScope?Définition de la connexion à la base de données lors de l'utilisation d'un TransactionScope

Ou est-ce que je peux le mettre dans le ctor et ensuite avoir des méthodes d'instance créer un TransactionScope?

EDIT: par exemple.

Public Sub New() 
    Dim conn = new SqlConnection(...connection string) 
Public Sub SomeClassMethod() 
    using ts as new TransactionScope 
     //conn has already been initialized 
     //so, here you can set commands, ExecuteDataSet, etc. 

vs

Public Sub New() 
    //nothing here 
Public Sub SomeClassMethod()  
    using ts as new TransactionScope 
     conn = new SqlConnection(...connection string) 
     set commands, ExecuteDataSet, etc. 

la question est de savoir si vous devez créer la connexion à la base de données une fois que vous avez créé un TransactionScope ou peut-il être fait avant?

+0

pouvez-vous élaborer un peu plus? –

Répondre

0

Si vous souhaitez que SqlConnection soit en transaction, vous devez le créer sous TransactionScope.

using(TransactionScope scope = new TransactionScope()) 
{ 
    SqlConnection x = new SqlConnestion("...."); 
    x.Open(); 
    ....your code... SQlCommands etc.... 
    x.Close(); 
    scope.Complete(); 
} 
+0

Est-ce que cela équivaut à créer d'abord la connexion, puis la portée, puis à l'intérieur de la portée en appelant connection.EnlistTransaction (Transaction.Current). Je l'espère, parce que j'ai vraiment besoin de créer une seule connexion FIRST, puis passer à différentes méthodes qui créent un transactioncope ... et je voudrais que ces méthodes pour enrôler la connexion existante dans la portée de la transaction existante, alors je ' Je ne crée pas de nouvelles connexions dans les étendues de transaction imbriquées, ce qui les amène à passer à une transaction distribuée (puisque plusieurs connexions seraient impliquées). – Triynko

Questions connexes