/// <summary>
        /// Updates existing data in the database, by saving the changes made to the specified record
        /// </summary>
        /// <param name="record">The record to update</param>
        /// <param name="autoFixErrors">Whether to automatically fix any fixable data errors</param>
        /// <param name="autoIgnoreErrors">Whether to automatically ignore any ignorable data errors</param>
        /// <param name="errorsToIgnore">A list of specific errors to ignore, if autoIgnoreErrors is off</param>
        /// <param name="errorsToFix">A list of specific errors to fix, if autoFixErrors is off</param>
        /// <param name="errorsToNotIgnore">A list of specific errors to not ignore, if autoIgnoreErrors is on</param>
        /// <param name="errorsToNotFix">A list of specific errors to not fix, if autoFixErrors is on</param>
        /// <returns>True if the record was succesfully updated</returns>
        public bool Update(ApiObject record, bool autoFixErrors = true, bool autoIgnoreErrors = true, string[] errorsToIgnore = null, string[] errorsToFix = null, string[] errorsToNotIgnore = null, string[] errorsToNotFix = null)
        {
            if (record == null)
            {
                throw new ArgumentNullException("record");
            }

            XElement xml    = record.ReduceToChanges();
            XElement errors = GetErrorsXml(autoFixErrors, autoIgnoreErrors, errorsToIgnore, errorsToFix, errorsToNotIgnore, errorsToNotFix);

            xml.Add(errors);
            XElement       result;
            HttpStatusCode status = PerformRequest(string.Join("/", "update", record.DBObjectName, record.ID), xml, out result);

            if (status == HttpStatusCode.OK)
            {
                record.ClearChanges();
                return(true);
            }
            return(false);
        }
        /// <summary>
        /// Updates existing data in the database, by saving the changes made to the specified record
        /// </summary>
        /// <param name="record">The record to update</param>
        /// <param name="autoFixErrors">Whether to automatically fix any fixable data errors</param>
        /// <param name="autoIgnoreErrors">Whether to automatically ignore any ignorable data errors</param>
        /// <param name="errorsToIgnore">A list of specific errors to ignore, if autoIgnoreErrors is off</param>
        /// <param name="errorsToFix">A list of specific errors to fix, if autoFixErrors is off</param>
        /// <param name="errorsToNotIgnore">A list of specific errors to not ignore, if autoIgnoreErrors is on</param>
        /// <param name="errorsToNotFix">A list of specific errors to not fix, if autoFixErrors is on</param>
        /// <returns>True if the record was successfully updated</returns>
        public bool Update(ApiObject record, bool autoFixErrors = true, bool autoIgnoreErrors = true, string[] errorsToIgnore = null, string[] errorsToFix = null, string[] errorsToNotIgnore = null, string[] errorsToNotFix = null)
        {
            if (record == null) throw new ArgumentNullException("record");

            XElement xml = record.ReduceToChanges();
            XElement errors = GetErrorsXml(autoFixErrors, autoIgnoreErrors, errorsToIgnore, errorsToFix, errorsToNotIgnore, errorsToNotFix);
            xml.Add(errors);
            XElement result;
            HttpStatusCode status = PerformRequest(string.Join("/", "update", record.TableName, record.ID), xml, out result);
            if (status == HttpStatusCode.OK)
            {
                record.ClearChanges();
                return true;
            }
            return false;
        }