public static CreateFolder Execute(string folderName, long?folderId, ExecutionScope executionScope = null, int commandTimeout = 300) { var retValue = new CreateFolder(); { var retryCycle = 0; while (true) { var conn = executionScope?.Transaction?.Connection ?? new SqlConnection(ExecutionScope.ConnectionString); try { if (conn.State != ConnectionState.Open) { if (executionScope == null) { conn.Open(); } else { retryCycle = int.MaxValue; throw new Exception("Execution Scope must have an open connection."); } } using (var cmd = conn.CreateCommand()) { cmd.CommandType = CommandType.StoredProcedure; if (executionScope?.Transaction != null) { cmd.Transaction = executionScope.Transaction; } cmd.CommandTimeout = commandTimeout; cmd.CommandText = "[catalog].[create_folder]"; cmd.Parameters.Add(new SqlParameter("@folder_name", SqlDbType.NVarChar, 128, ParameterDirection.Input, true, 0, 0, null, DataRowVersion.Default, folderName)); cmd.Parameters.Add(new SqlParameter("@folder_id", SqlDbType.BigInt, 8, ParameterDirection.Output, true, 19, 0, null, DataRowVersion.Default, folderId)); cmd.Parameters.Add(new SqlParameter("@ReturnValue", SqlDbType.Int, 4, ParameterDirection.ReturnValue, true, 0, 0, null, DataRowVersion.Default, DBNull.Value)); cmd.ExecuteNonQuery(); retValue.Parameters = new ParametersCollection(folderName, cmd.Parameters["@folder_id"].Value == DBNull.Value ? null : (long?)cmd.Parameters["@folder_id"].Value); retValue.ReturnValue = (int)cmd.Parameters["@ReturnValue"].Value; return(retValue); } } catch (SqlException e) { if (retryCycle++ > 9 || !ExecutionScope.RetryableErrors.Contains(e.Number)) { throw; } System.Threading.Thread.Sleep(1000); } finally { if (executionScope == null) { conn?.Dispose(); } } } } }
public static async Task <ValidateProject> ExecuteAsync(string folderName, string projectName, string validateType, long?validationId, bool?use32Bitruntime, string environmentScope, long?referenceId, ExecutionScope executionScope = null, int commandTimeout = 30) { var retValue = new ValidateProject(); { var retryCycle = 0; while (true) { var conn = executionScope?.Transaction?.Connection ?? new SqlConnection(ExecutionScope.ConnectionString); try { if (conn.State != ConnectionState.Open) { if (executionScope == null) { await conn.OpenAsync(); } else { retryCycle = int.MaxValue; throw new Exception("Execution Scope must have an open connection."); } } using (var cmd = conn.CreateCommand()) { cmd.CommandType = CommandType.StoredProcedure; if (executionScope?.Transaction != null) { cmd.Transaction = executionScope.Transaction; } cmd.CommandTimeout = commandTimeout; cmd.CommandText = "[catalog].[validate_project]"; cmd.Parameters.Add(new SqlParameter("@folder_name", SqlDbType.NVarChar, 128, ParameterDirection.Input, true, 0, 0, null, DataRowVersion.Default, folderName)); cmd.Parameters.Add(new SqlParameter("@project_name", SqlDbType.NVarChar, 128, ParameterDirection.Input, true, 0, 0, null, DataRowVersion.Default, projectName)); cmd.Parameters.Add(new SqlParameter("@validate_type", SqlDbType.Char, 1, ParameterDirection.Input, true, 0, 0, null, DataRowVersion.Default, validateType)); cmd.Parameters.Add(new SqlParameter("@validation_id", SqlDbType.BigInt, 8, ParameterDirection.Output, true, 19, 0, null, DataRowVersion.Default, validationId)); cmd.Parameters.Add(new SqlParameter("@use32bitruntime", SqlDbType.Bit, 1, ParameterDirection.Input, true, 1, 0, null, DataRowVersion.Default, use32Bitruntime)); cmd.Parameters.Add(new SqlParameter("@environment_scope", SqlDbType.Char, 1, ParameterDirection.Input, true, 0, 0, null, DataRowVersion.Default, environmentScope)); cmd.Parameters.Add(new SqlParameter("@reference_id", SqlDbType.BigInt, 8, ParameterDirection.Input, true, 19, 0, null, DataRowVersion.Default, referenceId)); cmd.Parameters.Add(new SqlParameter("@ReturnValue", SqlDbType.Int, 4, ParameterDirection.ReturnValue, true, 0, 0, null, DataRowVersion.Default, DBNull.Value)); await cmd.ExecuteNonQueryAsync(); retValue.Parameters = new ParametersCollection(folderName, projectName, validateType, cmd.Parameters["@validation_id"].Value == DBNull.Value ? null : (long?)cmd.Parameters["@validation_id"].Value, use32Bitruntime, environmentScope, referenceId); retValue.ReturnValue = (int)cmd.Parameters["@ReturnValue"].Value; return(retValue); } } catch (SqlException e) { if (retryCycle++ > 9 || !ExecutionScope.RetryableErrors.Contains(e.Number)) { throw; } System.Threading.Thread.Sleep(1000); } finally { if (executionScope == null) { conn?.Dispose(); } } } } }
public static async Task <SetObjectParameterValue> ExecuteAsync(short?objectType, string folderName, string projectName, string parameterName, object parameterValue, string objectName, string valueType, ExecutionScope executionScope = null, int commandTimeout = 300) { var retValue = new SetObjectParameterValue(); { var retryCycle = 0; while (true) { var conn = executionScope?.Transaction?.Connection ?? new SqlConnection(ExecutionScope.ConnectionString); try { if (conn.State != ConnectionState.Open) { if (executionScope == null) { await conn.OpenAsync(); } else { retryCycle = int.MaxValue; throw new Exception("Execution Scope must have an open connection."); } } using (var cmd = conn.CreateCommand()) { cmd.CommandType = CommandType.StoredProcedure; if (executionScope?.Transaction != null) { cmd.Transaction = executionScope.Transaction; } cmd.CommandTimeout = commandTimeout; cmd.CommandText = "[catalog].[set_object_parameter_value]"; cmd.Parameters.Add(new SqlParameter("@object_type", SqlDbType.SmallInt, 2, ParameterDirection.Input, true, 5, 0, null, DataRowVersion.Default, objectType)); cmd.Parameters.Add(new SqlParameter("@folder_name", SqlDbType.NVarChar, 128, ParameterDirection.Input, true, 0, 0, null, DataRowVersion.Default, folderName)); cmd.Parameters.Add(new SqlParameter("@project_name", SqlDbType.NVarChar, 128, ParameterDirection.Input, true, 0, 0, null, DataRowVersion.Default, projectName)); cmd.Parameters.Add(new SqlParameter("@parameter_name", SqlDbType.NVarChar, 128, ParameterDirection.Input, true, 0, 0, null, DataRowVersion.Default, parameterName)); cmd.Parameters.Add(new SqlParameter("@parameter_value", SqlDbType.Variant, 8016, ParameterDirection.Input, true, 0, 0, null, DataRowVersion.Default, parameterValue)); cmd.Parameters.Add(new SqlParameter("@object_name", SqlDbType.NVarChar, 260, ParameterDirection.Input, true, 0, 0, null, DataRowVersion.Default, objectName)); cmd.Parameters.Add(new SqlParameter("@value_type", SqlDbType.Char, 1, ParameterDirection.Input, true, 0, 0, null, DataRowVersion.Default, valueType)); cmd.Parameters.Add(new SqlParameter("@ReturnValue", SqlDbType.Int, 4, ParameterDirection.ReturnValue, true, 0, 0, null, DataRowVersion.Default, DBNull.Value)); await cmd.ExecuteNonQueryAsync(); retValue.Parameters = new ParametersCollection(objectType, folderName, projectName, parameterName, parameterValue, objectName, valueType); retValue.ReturnValue = (int)cmd.Parameters["@ReturnValue"].Value; return(retValue); } } catch (SqlException e) { if (retryCycle++ > 9 || !ExecutionScope.RetryableErrors.Contains(e.Number)) { throw; } System.Threading.Thread.Sleep(1000); } finally { if (executionScope == null) { conn?.Dispose(); } } } } }