问题
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();
回答1:
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.
来源:https://stackoverflow.com/questions/3057570/is-there-a-difference-smo-serverconnection-transaction-methods-versus-using-the