public DatabaseNotExpression(DatabaseExpression expression) { if (expression.sqlOperator != null) { throw new ArgumentException("expression has operator"); } this.expression = expression; }
/// <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(); }
public static IDatabaseExpression Not(DatabaseExpression expression) => new DatabaseNotExpression(expression);