Пример #1
0
 public DatabaseNotExpression(DatabaseExpression expression)
 {
     if (expression.sqlOperator != null)
     {
         throw new ArgumentException("expression has operator");
     }
     this.expression = expression;
 }
Пример #2
0
        /// <summary>
        /// Get SQL string to search
        /// </summary>
        /// <param name="mode"></param>
        /// <param name="reference"></param>
        /// <returns></returns>
        public IDatabaseExpression ToSql(CompareMode mode, object reference)
        {
            if (this.fullConverter != null)
            {
                return(this.fullConverter(reference, mode));
            }

            if (reference == null)
            {
                switch (mode)
                {
                case CompareMode.Equal:
                case CompareMode.LessEqual:
                case CompareMode.GreatEqual:
                    return(DatabaseExpression.IsNull(this.selector));

                case CompareMode.NotEqual:
                case CompareMode.Less:
                case CompareMode.Great:
                    return(DatabaseExpression.IsNotNull(this.selector));
                }

                throw new ArgumentException();
            }


            if (this.converter == null)
            {
                if (this.IsComparable)
                {
                    return(DatabaseExpression.Compare
                               (this.selector, mode, new DatabaseReference(reference.ToString())));
                }
                switch (mode)
                {
                case CompareMode.Equal:
                case CompareMode.LessEqual:
                case CompareMode.GreatEqual:
                    return(DatabaseExpression.AreEqual
                               (this.selector, new DatabaseReference(reference.ToString())));

                case CompareMode.NotEqual:
                case CompareMode.Less:
                case CompareMode.Great:
                    return(DatabaseExpression.AreNotEqual
                               (this.selector, new DatabaseReference(reference.ToString())));
                }
                throw new ArgumentException();
            }

            var converted = this.converter(reference);

            if (this.IsComparable)
            {
                return(DatabaseExpression.Compare(this.selector, mode, converted));
            }
            switch (mode)
            {
            case CompareMode.Equal:
            case CompareMode.LessEqual:
            case CompareMode.GreatEqual:
                return(DatabaseExpression.Is(this.selector, converted));

            case CompareMode.NotEqual:
            case CompareMode.Less:
            case CompareMode.Great:
                return(DatabaseExpression.IsNot(this.selector, converted));
            }
            throw new ArgumentException();
        }
Пример #3
0
 public static IDatabaseExpression Not(DatabaseExpression expression)
 => new DatabaseNotExpression(expression);