/// <summary>
        /// Inserts the integration service call rule.
        /// </summary>
        /// <param name="dto">The dto.</param>
        /// <exception cref="System.ArgumentNullException">dto</exception>
        /// <exception cref="System.Data.DBConcurrencyException"></exception>
        public void InsertIntegrationServiceCallRule(IntegrationServiceCallRuleDto dto)
        {
            const string CommandText = @"
INSERT INTO [dbo].[IntegrationServiceCallRules]
(
     [LastModifiedOn]
    ,[CallSettingsId]
    ,[RuleGuid]
)
VALUES
(
     GETDATE()
    ,@callSettingsId
    ,@ruleGuid
);

SET @id = SCOPE_IDENTITY();";

            if (dto == null)
                throw new ArgumentNullException("dto");

            using (var cmd = new SqlCommand(CommandText))
            {
                var idParam = cmd.Parameters.Add("@id", SqlDbType.Int);

                idParam.Direction = ParameterDirection.Output;

                cmd.Parameters.AddWithValue("@callSettingsId", dto.CallSettingsId);
                cmd.Parameters.AddWithValue("@ruleGuid", dto.RuleGuid);

                var rowsAffected = Database.Execute(cmd);

                if (rowsAffected == 0)
                    throw new DBConcurrencyException(ConcurencyException);

                dto.Id = (int)idParam.Value;
            }
        }
        /// <summary>
        /// Updates the integration service call rule.
        /// </summary>
        /// <param name="dto">The dto.</param>
        /// <exception cref="System.ArgumentNullException">dto</exception>
        /// <exception cref="System.Data.DBConcurrencyException"></exception>
        public void UpdateIntegrationServiceCallRule(IntegrationServiceCallRuleDto dto)
        {
            const string CommandText = @"
UPDATE [dbo].[IntegrationServiceCallRules]
SET
     [LastModifiedOn] = GETDATE()
    ,[CallSettingsId] = @callSettingsId
    ,[RuleGuid] = @ruleGuid
WHERE [Id] = @id;";

            if (dto == null)
                throw new ArgumentNullException("dto");

            using (var cmd = new SqlCommand(CommandText))
            {
                cmd.Parameters.AddWithValue("@id", dto.Id);
                cmd.Parameters.AddWithValue("@callSettingsId", dto.CallSettingsId);
                cmd.Parameters.AddWithValue("@ruleGuid", dto.RuleGuid);

                var rowsAffected = Database.Execute(cmd);

                if (rowsAffected == 0)
                    throw new DBConcurrencyException(ConcurencyException);
            }
        }
        /// <summary>
        /// Reads the integration service call rules.
        /// </summary>
        /// <param name="callSettingsDto">The call settings dto.</param>
        /// <param name="reader">The reader.</param>
        private static void ReadIntegrationServiceCallRules(IntegrationServiceCallSettingsDto callSettingsDto, IDataReader reader)
        {
            reader.NextResult();

            while (reader.Read())
            {
                var ruleDto = new IntegrationServiceCallRuleDto { Id = reader.GetInt32(0), RuleGuid = reader.GetGuid(1) };
                callSettingsDto.Rules.Add(ruleDto);
            }
        }