3

I am using SMO to create databases and tables on a SQL Server. I want to do so in a transaction. Are both of these methods of doing so valid and equivalent:

First method:

Server server;
//...
server.ConnectionContext.BeginTransaction();
//...
server.ConnectionContext.CommitTransaction();

Second method:

Server server;
// ...
SqlConnection conn = server.ConnectionContext.SqlConnectionObject;
SqlTransaction trans = conn.BeginTransaction();
// ...
trans.Commit();
YWE
  • 2,789
  • 27
  • 42

1 Answers1

3

The two are equivalent. Using a SqlTransaction object allows you to place the transaction in an using scope:

using(SqlTransaction  trn = conn.BeginTransaction ())
{
 ...
 trn.Commit ();
}

This is a better pattern in presence of exceptions.

Remus Rusanu
  • 281,117
  • 39
  • 423
  • 553