> public StoredProcParameter[] Execute(ref DataSet ds, string strSpName, StoredProcParameter[] _arrParams,TransactionEx tran) > { > StoredProcParameter[] _arrOutParams = null; > using (TransactionHolder tranHolder = new TransactionHolder(tran)) > { > using (SqlCommand sqlCmd = new SqlCommand(strSpName, tranHolder.Connection, tranHolder.SqlTransaction)) > { > sqlCmd.CommandType = CommandType.StoredProcedure; > // set command time-out to 15 minites > sqlCmd.CommandTimeout = _nStoredProcTimeout; > > // prepare command parameters > PrepareStoredProcedureParams(strSpName, sqlCmd, _arrParams); > > using (SqlDataAdapter da = new SqlDataAdapter(sqlCmd)) > { > string strTableName = strSpName; > da.Fill(ds, strTableName); > } > tranHolder.Commit(); > _arrOutParams = TransformParams(sqlCmd.Parameters); > } > } > return _arrOutParams; > } >>Connection is already open at that moment, and created with first access to TransactionHolder.Connection property:
> get > { > return new SqlConnection(strDBConnectionString); > } >>