protected async override Task <Action <AsyncCodeActivityContext> > ExecuteAsync(AsyncCodeActivityContext context, CancellationToken cancellationToken) { var connString = ConnectionString.Get(context); SecureString connSecureString = null; var provName = ProviderName.Get(context); connSecureString = ConnectionSecureString.Get(context); DatabaseConnection existingConnection = null; existingConnection = ExistingDbConnection.Get(context); DatabaseConnection dbConnection = null; var continueOnError = ContinueOnError.Get(context); try { ConnectionHelper.ConnectionValidation(existingConnection, connSecureString, connString, provName); dbConnection = await Task.Run(() => existingConnection ?? new DatabaseConnection().Initialize(connString ?? new NetworkCredential("", connSecureString).Password, provName)); if (UseTransaction) { dbConnection.BeginTransaction(); } } catch (Exception e) { Trace.TraceError($"{e}"); HandleException(e, continueOnError); } return(asyncCodeActivityContext => { DatabaseConnection.Set(asyncCodeActivityContext, dbConnection); }); }
protected async override Task <Action <AsyncCodeActivityContext> > ExecuteAsync(AsyncCodeActivityContext context, CancellationToken cancellationToken) { var connString = ConnectionString.Get(context); var connSecureString = ConnectionSecureString.Get(context); if (connString == null && connSecureString == null) { throw new ArgumentNullException(Resources.ValidationError_ConnectionStringMustNotBeNull); } if (connString != null && connSecureString != null) { throw new ArgumentException(Resources.ValidationError_ConnectionStringMustBeSet); } var provName = ProviderName.Get(context); DatabaseConnection dbConnection = null; try { dbConnection = await Task.Run(() => _connectionFactory.Create(connString ?? new NetworkCredential("", connSecureString).Password, provName)); } catch (Exception e) { Trace.TraceError($"{e}"); } return(asyncCodeActivityContext => { DatabaseConnection.Set(asyncCodeActivityContext, dbConnection); }); }
protected async override Task <Action <AsyncCodeActivityContext> > ExecuteAsync(AsyncCodeActivityContext context, CancellationToken cancellationToken) { DataTable dataTable = null; string connString = null; SecureString connSecureString = null; string provName = null; string tableName = null; string[] columnNames = null; DatabaseConnection existingConnection = null; long affectedRecords = 0; IExecutorRuntime executorRuntime = null; var continueOnError = ContinueOnError.Get(context); try { existingConnection = DbConnection = ExistingDbConnection.Get(context); connString = ConnectionString.Get(context); provName = ProviderName.Get(context); tableName = TableName.Get(context); dataTable = DataTable.Get(context); columnNames = ColumnNames.Get(context); executorRuntime = context.GetExtension <IExecutorRuntime>(); connSecureString = ConnectionSecureString.Get(context); ConnectionHelper.ConnectionValidation(existingConnection, connSecureString, connString, provName); affectedRecords = await Task.Run(() => { DbConnection = DbConnection ?? new DatabaseConnection().Initialize(connString != null ? connString : new NetworkCredential("", connSecureString).Password, provName); if (DbConnection == null) { return(0); } if (executorRuntime != null && executorRuntime.HasFeature(ExecutorFeatureKeys.LogMessage)) { return(DbConnection.BulkUpdateDataTable(BulkUpdateFlag, tableName, dataTable, columnNames, executorRuntime)); } else { return(DbConnection.BulkUpdateDataTable(BulkUpdateFlag, tableName, dataTable, columnNames)); } }); } catch (Exception ex) { HandleException(ex, continueOnError); } finally { if (existingConnection == null) { DbConnection?.Dispose(); } } return(asyncCodeActivityContext => { AffectedRecords.Set(asyncCodeActivityContext, affectedRecords); }); }
protected async override Task <Action <AsyncCodeActivityContext> > ExecuteAsync(AsyncCodeActivityContext context, CancellationToken cancellationToken) { DataTable dataTable = null; string connString = null; SecureString connSecureString = null; string provName = null; string tableName = null; DatabaseConnection existingConnection = null; int affectedRecords = 0; var continueOnError = ContinueOnError.Get(context); try { existingConnection = DbConnection = ExistingDbConnection.Get(context); connString = ConnectionString.Get(context); provName = ProviderName.Get(context); tableName = TableName.Get(context); dataTable = DataTable.Get(context); connSecureString = ConnectionSecureString.Get(context); ConnectionHelper.ConnectionValidation(existingConnection, connSecureString, connString, provName); // create the action for doing the actual work affectedRecords = await Task.Run(() => { DbConnection = DbConnection ?? new DatabaseConnection().Initialize(connString != null ? connString : new NetworkCredential("", connSecureString).Password, provName); if (DbConnection == null) { return(0); } return(DbConnection.InsertDataTable(tableName, dataTable)); }); } catch (Exception ex) { HandleException(ex, continueOnError); } finally { if (existingConnection == null) { DbConnection?.Dispose(); } } return(asyncCodeActivityContext => { AffectedRecords.Set(asyncCodeActivityContext, affectedRecords); }); }
protected async override Task <Action <AsyncCodeActivityContext> > ExecuteAsync(AsyncCodeActivityContext context, CancellationToken cancellationToken) { string connString = null; SecureString connSecureString = null; string provName = null; string sql = string.Empty; int commandTimeout = TimeoutMS.Get(context); DatabaseConnection existingConnection = null; DBExecuteCommandResult affectedRecords = null; if (commandTimeout < 0) { throw new ArgumentException(Resources.TimeoutMSException, "TimeoutMS"); } Dictionary <string, Tuple <object, ArgumentDirection> > parameters = null; var continueOnError = ContinueOnError.Get(context); try { sql = Sql.Get(context); existingConnection = DbConnection = ExistingDbConnection.Get(context); connString = ConnectionString.Get(context); connSecureString = ConnectionSecureString.Get(context); provName = ProviderName.Get(context); if (Parameters != null) { parameters = new Dictionary <string, Tuple <object, ArgumentDirection> >(); foreach (var param in Parameters) { parameters.Add(param.Key, new Tuple <object, ArgumentDirection>(param.Value.Get(context), param.Value.Direction)); } } ConnectionHelper.ConnectionValidation(existingConnection, connSecureString, connString, provName); // create the action for doing the actual work affectedRecords = await Task.Run(() => { DBExecuteCommandResult executeResult = new DBExecuteCommandResult(); if (DbConnection == null) { DbConnection = new DatabaseConnection().Initialize(connString ?? new NetworkCredential("", connSecureString).Password, provName); } if (DbConnection == null) { return(executeResult); } executeResult = new DBExecuteCommandResult(DbConnection.Execute(sql, parameters, commandTimeout, CommandType), parameters); return(executeResult); }); } catch (Exception ex) { HandleException(ex, continueOnError); } finally { if (existingConnection == null) { DbConnection?.Dispose(); } } return(asyncCodeActivityContext => { AffectedRecords.Set(asyncCodeActivityContext, affectedRecords.Result); foreach (var param in affectedRecords.ParametersBind) { var currentParam = Parameters[param.Key]; if (currentParam.Direction == ArgumentDirection.Out || currentParam.Direction == ArgumentDirection.InOut) { currentParam.Set(asyncCodeActivityContext, param.Value.Item1); } } }); }