public override string TranslateToSql(SetFieldInfo operation)
        {
            switch (operation.Type)
            {
            case "WithSQL":
                return($"{ operation.Field } = { operation.Value }");

            case "WithValue":
                return($"{operation.Field} = {{{ operation.Index }}}");

            case "Plus":
                return($"{operation.Field} = {operation.Field} + {{{ operation.Index }}}");

            case "Subtract":
                return($"{operation.Field} = {operation.Field} - {{{ operation.Index }}}");

            case "Multiply":
                return($"{operation.Field} = {operation.Field} * {{{ operation.Index }}}");

            case "Divide":
                return($"{operation.Field} = {operation.Field} / {{{ operation.Index }}}");

            case "Mod":
                return($"{operation.Field} = {operation.Field} % {{{ operation.Index }}}");

            case "Append":
                return($"{operation.Field} = {operation.Field} || {{{operation.Index}}}");

            case "Prepend":
                return($"{operation.Field} = {{{operation.Index}}} || {operation.Field}");

            case "AddMilliseconds":
                throw new NotImplementedException();

            case "AddSeconds":
                return($"{operation.Field} = {operation.Field} + INTERVAL '{ operation.Value } Seconds'");

            case "AddMinutes":
                return($"{operation.Field} = {operation.Field} + INTERVAL '{ operation.Value }  Minutes'");

            case "AddHours":
                return($"{operation.Field} = {operation.Field} + INTERVAL '{ operation.Value }  Hours'");

            case "AddDays":
                return($"{operation.Field} = {operation.Field} + INTERVAL '{ operation.Value }  Days'");

            case "AddMonths":
                return($"{operation.Field} = {operation.Field} + INTERVAL '{ operation.Value }  Months'");

            case "AddYears":
                return($"{operation.Field} = {operation.Field} + INTERVAL '{ operation.Value }  Years'");
            }
            return(string.Empty);
        }
        public virtual string TranslateToSql(SetFieldInfo operation)
        {
            switch (operation.Type)
            {
            case "WithSQL":
                return($"{ operation.Field } = { operation.Value }");

            case "WithValue":
                return($"{operation.Field} = {{{ operation.Index }}}");

            case "Plus":
                return($"{operation.Field} = {operation.Field} + {{{ operation.Index }}}");

            case "Subtract":
                return($"{operation.Field} = {operation.Field} - {{{ operation.Index }}}");

            case "Multiply":
                return($"{operation.Field} = {operation.Field} * {{{ operation.Index }}}");

            case "Divide":
                return($"{operation.Field} = {operation.Field} / {{{ operation.Index }}}");

            case "Mod":
                return($"{operation.Field} = {operation.Field} % {{{ operation.Index }}}");

            case "Append":
                throw new NotSupportedException("Relational field setter does not support this operation.");

            case "Prepend":
                throw new NotSupportedException("Relational field setter does not support this operation.");

            case "AddMilliseconds":
                throw new NotSupportedException("Relational field setter does not support this operation.");

            case "AddSeconds":
                throw new NotSupportedException("Relational field setter does not support this operation.");

            case "AddMinutes":
                throw new NotSupportedException("Relational field setter does not support this operation.");

            case "AddHours":
                throw new NotSupportedException("Relational field setter does not support this operation.");

            case "AddDays":
                throw new NotSupportedException("Relational field setter does not support this operation.");

            case "AddMonths":
                throw new NotSupportedException("Relational field setter does not support this operation.");

            case "AddYears":
                throw new NotSupportedException("Relational field setter does not support this operation.");
            }
            return(string.Empty);
        }
        public override string TranslateToSql(SetFieldInfo operation)
        {
            switch (operation.Type)
            {
            case "WithSQL":
                return($"{ operation.Field } = { operation.Value }");

            case "WithValue":
                return($"{operation.Field} = {{{ operation.Index }}}");

            case "Plus":
                return($"{operation.Field} = {operation.Field} + {{{ operation.Index }}}");

            case "Subtract":
                return($"{operation.Field} = {operation.Field} - {{{ operation.Index }}}");

            case "Multiply":
                return($"{operation.Field} = {operation.Field} * {{{ operation.Index }}}");

            case "Divide":
                return($"{operation.Field} = {operation.Field} / {{{ operation.Index }}}");

            case "Mod":
                return($"{operation.Field} = {operation.Field} % {{{ operation.Index }}}");

            case "Append":
                return($"{operation.Field} = CONCAT({operation.Field}, {{{operation.Index}}})");

            case "Prepend":
                return($"{operation.Field} = CONCAT({{{operation.Index}}}, {operation.Field})");

            case "AddMilliseconds":
                return($"{operation.Field} = DATE_ADD({operation.Field}, INTERVAL {{{operation.Index}}} microsecond)");

            case "AddSeconds":
                return($"{operation.Field} = DATE_ADD({operation.Field}, INTERVAL {{{operation.Index}}} second)");

            case "AddMinutes":
                return($"{operation.Field} = DATE_ADD({operation.Field}, INTERVAL {{{operation.Index}}} minute)");

            case "AddHours":
                return($"{operation.Field} = DATE_ADD({operation.Field}, INTERVAL {{{operation.Index}}} hour)");

            case "AddDays":
                return($"{operation.Field} = DATE_ADD({operation.Field}, INTERVAL {{{operation.Index}}} day)");

            case "AddMonths":
                return($"{operation.Field} = DATE_ADD({operation.Field}, INTERVAL {{{operation.Index}}} month)");

            case "AddYears":
                return($"{operation.Field} = DATE_ADD({operation.Field}, INTERVAL {{{operation.Index}}} year)");
            }
            return(string.Empty);
        }
        public override string TranslateToSql(SetFieldInfo operation)
        {
            switch (operation.Type)
            {
            case "WithSQL":
                return($"{ operation.Field } = { operation.Value }");

            case "WithValue":
                return($"{operation.Field} = {{{ operation.Index }}}");

            case "Plus":
                return($"{operation.Field} = {operation.Field} + {{{ operation.Index }}}");

            case "Subtract":
                return($"{operation.Field} = {operation.Field} - {{{ operation.Index }}}");

            case "Multiply":
                return($"{operation.Field} = {operation.Field} * {{{ operation.Index }}}");

            case "Divide":
                return($"{operation.Field} = {operation.Field} / {{{ operation.Index }}}");

            case "Mod":
                return($"{operation.Field} = {operation.Field} % {{{ operation.Index }}}");

            case "Append":
                return($"{operation.Field} = {operation.Field}+{{{operation.Index}}}");

            case "Prepend":
                return($"{operation.Field} = {{{operation.Index}}}+{operation.Field}");

            case "AddMilliseconds":
                return($"{operation.Field} = DATEADD(ms, {{{operation.Index}}}, {operation.Field})");

            case "AddSeconds":
                return($"{operation.Field} = DATEADD(ss, {{{operation.Index}}}, {operation.Field})");

            case "AddMinutes":
                return($"{operation.Field} = DATEADD(mi, {{{operation.Index}}}, {operation.Field})");

            case "AddHours":
                return($"{operation.Field} = DATEADD(hh, {{{operation.Index}}}, {operation.Field})");

            case "AddDays":
                return($"{operation.Field} = DATEADD(dd, {{{operation.Index}}}, {operation.Field})");

            case "AddMonths":
                return($"{operation.Field} = DATEADD(mm, {{{operation.Index}}}, {operation.Field})");

            case "AddYears":
                return($"{operation.Field} = DATEADD(yy, {{{operation.Index}}}, {operation.Field})");
            }
            return(string.Empty);
        }
        public override string TranslateToSql(SetFieldInfo operation)
        {
            switch (operation.Type)
            {
            case "WithSQL":
                return($"{ operation.Field } = { operation.Value }");

            case "WithValue":
                return($"{operation.Field} = {{{ operation.Index }}}");

            case "Plus":
                return($"{operation.Field} = {operation.Field} + {{{ operation.Index }}}");

            case "Subtract":
                return($"{operation.Field} = {operation.Field} - {{{ operation.Index }}}");

            case "Multiply":
                return($"{operation.Field} = {operation.Field} * {{{ operation.Index }}}");

            case "Divide":
                return($"{operation.Field} = {operation.Field} / {{{ operation.Index }}}");

            case "Mod":
                return($"{operation.Field} = {operation.Field} % {{{ operation.Index }}}");

            case "Append":
                return($"{operation.Field} = {operation.Field} || {{{operation.Index}}}");

            case "Prepend":
                return($"{operation.Field} = {{{operation.Index}}} || {operation.Field}");

            case "AddMilliseconds":
                throw new NotSupportedException("Sqlite does not support million seconds operation of a datetime type.");

            case "AddSeconds":
                if (Convert.ToInt64(operation.Value) > 0)
                {
                    return($"{operation.Field} = DATETIME({operation.Field}, '+{ operation.Value } SECONDS')");
                }
                else
                {
                    return($"{operation.Field} = DATETIME({operation.Field}, '{ operation.Value } SECONDS')");
                }

            case "AddMinutes":
                if (Convert.ToInt64(operation.Value) > 0)
                {
                    return($"{operation.Field} = DATETIME({operation.Field}, '+{ operation.Value } MINUTES')");
                }
                else
                {
                    return($"{operation.Field} = DATETIME({operation.Field}, '{ operation.Value } MINUTES')");
                }

            case "AddHours":
                if (Convert.ToInt64(operation.Value) > 0)
                {
                    return($"{operation.Field} = DATETIME({operation.Field}, '+{ operation.Value } HOURS')");
                }
                else
                {
                    return($"{operation.Field} = DATETIME({operation.Field}, '{ operation.Value } HOURS')");
                }

            case "AddDays":
                if (Convert.ToInt64(operation.Value) > 0)
                {
                    return($"{operation.Field} = DATETIME({operation.Field}, '+{ operation.Value } DAYS')");
                }
                else
                {
                    return($"{operation.Field} = DATETIME({operation.Field}, '{ operation.Value } DAYS')");
                }

            case "AddMonths":
                if (Convert.ToInt64(operation.Value) > 0)
                {
                    return($"{operation.Field} = DATETIME({operation.Field}, '+{ operation.Value } MONTHS')");
                }
                else
                {
                    return($"{operation.Field} = DATETIME({operation.Field}, '{ operation.Value } MONTHS')");
                }

            case "AddYears":
                if (Convert.ToInt64(operation.Value) > 0)
                {
                    return($"{operation.Field} = DATETIME({operation.Field}, '+{ operation.Value } YEARS')");
                }
                else
                {
                    return($"{operation.Field} = DATETIME({operation.Field}, '{ operation.Value } YEARS')");
                }
            }
            return(string.Empty);
        }