Yes, you can create a global instance of SqlConnection. In my case, I use SqlConnection as a member of my DataContext, which I access through Singleton.
public class DatabaseDataContext : DataContext { private static DatabaseDataContext instance; private SqlConnection sqlConnection; private SqlTransaction sqlTransaction;
You can encapsulate your transactions by closing and opening this connection, i.e.:
DatabaseDataContext.Instance.sqlConnection.Open();
Or you can leave the connection open, but instead, start and end the transaction:
DatabaseDataContext.Instance.sqlConnection.Open(); sqlTransaction = sqlConnection.BeginTransaction("Example Insert users"); try{ // ...your first transaction sqlTransaction.Commit(); } catch{sqlTransaction.Rollback();} sqlTransaction = sqlConnection.BeginTransaction("Update baked breads"); try{ // ...your second transaction sqlTransaction.Commit(); } catch{sqlTransaction.Rollback();} // Close the connection at some point sqlConnection.Close();
Flaudre
source share