/// <summary> /// Inserts a data trigger stored procedure parameter. /// </summary> /// <param name="dto">The data transfer object.</param> /// <exception cref="System.ArgumentNullException">dto</exception> /// <exception cref="System.Data.DBConcurrencyException"></exception> /// <exception cref="ArgumentNullException">The <see cref="dto" /> parameter is null.</exception> /// <exception cref="DBConcurrencyException">Indicates stale data.</exception> public void InsertDataTriggerStoredProcedureParameter(DataTriggerStoredProcedureParameterDto dto) { if (dto == null) throw new ArgumentNullException("dto"); const string CommandText = @" INSERT INTO [dbo].[DataTriggerStoredProcedureParameters] ( [Guid] ,[TriggerId] ,[LastModifiedOn] ,[Name] ,[DataType] ,[Expression] ) VALUES ( @guid ,@triggerId ,GETDATE() ,@name ,@dataType ,@expression ) SET @id = SCOPE_IDENTITY();"; using (var cmd = new SqlCommand(CommandText)) { var idParam = cmd.Parameters.Add("@id", SqlDbType.Int); idParam.Direction = ParameterDirection.Output; cmd.Parameters.AddWithValue("@guid", dto.Guid); cmd.Parameters.AddWithValue("@triggerId", dto.TriggerId); cmd.Parameters.AddWithValue("@name", dto.Name); cmd.Parameters.AddWithValue("@dataType", dto.DataType.ToString()); cmd.Parameters.AddWithValue("@expression", dto.Expression); var rowsAffected = Database.Execute(cmd); if (rowsAffected == 0) { throw new DBConcurrencyException(Resources.StaleDataException); } dto.Id = (int)idParam.Value; } }
/// <summary> /// Updates a data trigger stored procedure parameter. /// </summary> /// <param name="dto">The data transfer object.</param> /// <exception cref="System.ArgumentNullException">dto</exception> /// <exception cref="System.Data.DBConcurrencyException"></exception> /// <exception cref="ArgumentNullException">The <see cref="dto" /> parameter is null.</exception> /// <exception cref="DBConcurrencyException">Indicates stale data.</exception> public void UpdateDataTriggerStoredProcedureParameter(DataTriggerStoredProcedureParameterDto dto) { if (dto == null) throw new ArgumentNullException("dto"); const string CommandText = @" UPDATE [dbo].[DataTriggerStoredProcedureParameters] SET [Guid] = @guid ,[TriggerId] = @triggerId ,[LastModifiedOn] = GETDATE() ,[Name] = @name ,[DataType] = @dataType ,[Expression] = @expression WHERE [Id] = @id;"; using (var cmd = new SqlCommand(CommandText)) { cmd.Parameters.AddWithValue("@id", dto.Id); cmd.Parameters.AddWithValue("@guid", dto.Guid); cmd.Parameters.AddWithValue("@triggerId", dto.TriggerId); cmd.Parameters.AddWithValue("@name", dto.Name); cmd.Parameters.AddWithValue("@dataType", dto.DataType.ToString()); cmd.Parameters.AddWithValue("@expression", dto.Expression); var rowsAffected = Database.Execute(cmd); if (rowsAffected == 0) { throw new DBConcurrencyException(Resources.StaleDataException); } } }
/// <summary> /// Reads the data trigger stored procedure parameters. /// </summary> /// <param name="process">The process.</param> /// <param name="sr">The data reader.</param> private static void ReadDataTriggerStoredProcedureParameters(ProcessEditDto process, SafeDataReader sr) { sr.NextResult(); int? triggerId = null; ProcessDataTriggerEditDto trigger = null; while (sr.Read()) { var parameterDto = new DataTriggerStoredProcedureParameterDto { Id = sr.GetInt32(0), Guid = sr.GetGuid(1), TriggerId = sr.GetInt32(2), Name = sr.GetString(3), DataType = sr.GetEnum(4, DbDataType.String), Expression = sr.GetString(5) }; if (parameterDto.TriggerId != triggerId) { trigger = process.TriggerList.First(t => t.Id == parameterDto.TriggerId); triggerId = parameterDto.TriggerId; } trigger.StoredProcedureParameters.Add(parameterDto); } }