/// <summary>
        /// Compares database table columns if schematicly match each other
        /// </summary>
        /// <param name="masterColumn">Master database table column (or left)</param>
        /// <param name="checkedColumn">Checked database table column (or right)</param>
        /// <returns>Comparison result</returns>
        public static DbSchemaCompareResult DbCompare(DbObjectTableColumnSchema masterColumn, DbObjectTableColumnSchema checkedColumn)
        {
            if (masterColumn == null)
            {
                throw new ArgumentNullException(nameof(masterColumn));
            }

            if (checkedColumn == null)
            {
                throw new ArgumentNullException(nameof(checkedColumn));
            }

            DbSchemaCompareResult result = DbObjectParameterSchema.DbCompare(masterColumn, checkedColumn);

            if (masterColumn.DefaultValue != checkedColumn.DefaultValue)
            {
                result.CompareResultType = DbSchemaCompareResultType.Different;
            }

            if (masterColumn.Collation != checkedColumn.Collation)
            {
                result.CompareResultType = DbSchemaCompareResultType.Different;
            }

            return(result);
        }
        /// <summary>
        /// Compares databas functions if schematicly match each other
        /// </summary>
        /// <param name="masterObjectFunction">Master database function (or left)</param>
        /// <param name="checkedObjectFunction">Checked database function (or right)</param>
        /// <returns>Comparison result</returns>
        public static DbSchemaCompareResult DbCompare(DbObjectFunctionSchema masterObjectFunction, DbObjectFunctionSchema checkedObjectFunction)
        {
            if (masterObjectFunction == null)
            {
                throw new ArgumentNullException(nameof(masterObjectFunction));
            }

            if (checkedObjectFunction == null)
            {
                throw new ArgumentNullException(nameof(checkedObjectFunction));
            }

            //masterObjectFunction.ReturnValues.Sort((l, r) => l.FakeOrderId.CompareTo(r.FakeOrderId));
            //checkedObjectFunction.ReturnValues.Sort((l, r) => l.FakeOrderId.CompareTo(r.FakeOrderId));

            DbSchemaCompareResult result = DbObjectStoredProcedureSchema.DbCompare(masterObjectFunction, checkedObjectFunction);

            foreach (DbObjectParameterSchema fMasterParam in masterObjectFunction.ReturnValues)
            {
                DbObjectParameterSchema fCheckParam = checkedObjectFunction.ReturnValues.FirstOrDefault(p => p.Name == fMasterParam.Name);
                result.InnerResults.Add(DbObjectParameterSchema.DbCompare(fMasterParam, fCheckParam));
            }

            foreach (DbObjectParameterSchema fCheckParam in checkedObjectFunction.ReturnValues)
            {
                DbObjectParameterSchema?fMasterParam = masterObjectFunction.ReturnValues.FirstOrDefault(p => p.Name == fCheckParam.Name);
                if (fMasterParam == null)
                {
                    result.InnerResults.Add(DbObjectParameterSchema.DbCompare(null, fCheckParam));
                }
            }

            return(result);
        }