Пример #1
0
 private static void Equals(MethodCallExpression expression, SqlBuilder sqlBuilder)
 {
     if (expression.Object != null)
     {
         Expression2SqlProvider.Where(expression.Object, sqlBuilder);
     }
     sqlBuilder += " =";
     Expression2SqlProvider.Where(expression.Arguments[0], sqlBuilder);
 }
Пример #2
0
 private static void Contains(MethodCallExpression expression, SqlBuilder sqlBuilder)
 {
     if (expression.Object != null)
     {
         Expression2SqlProvider.Where(expression.Object, sqlBuilder);
     }
     sqlBuilder += " like '%'+";
     Expression2SqlProvider.Where(expression.Arguments[0], sqlBuilder);
     sqlBuilder += " +'%'";
 }
Пример #3
0
 private static void EndsWith(MethodCallExpression expression, SqlBuilder sqlBuilder)
 {
     if (expression.Object != null)
     {
         Expression2SqlProvider.Where(expression.Object, sqlBuilder);
     }
     sqlBuilder.AllowAppendEmpty = false;
     sqlBuilder += " like '%' +";
     Expression2SqlProvider.Where(expression.Arguments[0], sqlBuilder);
     sqlBuilder.AllowAppendEmpty = true;
 }
Пример #4
0
 private static void LikeRight(MethodCallExpression expression, SqlBuilder sqlBuilder)
 {
     if (expression.Object != null)
     {
         Expression2SqlProvider.Where(expression.Object, sqlBuilder);
     }
     Expression2SqlProvider.Where(expression.Arguments[0], sqlBuilder);
     sqlBuilder += " like ";
     Expression2SqlProvider.Where(expression.Arguments[1], sqlBuilder);
     sqlBuilder += " + '%'";
 }
Пример #5
0
        public ExpressionToSql <T> Where(Expression <Func <T, bool> > expression)
        {
            if (expression == null)
            {
                throw new ArgumentNullException("expression", "Value cannot be null");
            }

            if (expression.Body != null && expression.Body.NodeType == ExpressionType.Constant)
            {
                throw new ArgumentException("Cannot be parse expression", "expression");
            }

            this._sqlBuilder += "\nwhere";
            Expression2SqlProvider.Where(expression.Body, this._sqlBuilder);
            return(this);
        }
Пример #6
0
        protected override SqlBuilder Where(BinaryExpression expression, SqlBuilder sqlBuilder)
        {
            if (IsNeedsParentheses(expression, expression.Left))
            {
                sqlBuilder += "(";
                Expression2SqlProvider.Where(expression.Left, sqlBuilder);
                sqlBuilder += ")";
            }
            else
            {
                Expression2SqlProvider.Where(expression.Left, sqlBuilder);
            }
            int signIndex = sqlBuilder.Length;

            if (IsNeedsParentheses(expression, expression.Right))
            {
                sqlBuilder += "(";
                Expression2SqlProvider.Where(expression.Right, sqlBuilder);
                sqlBuilder += ")";
            }
            else
            {
                Expression2SqlProvider.Where(expression.Right, sqlBuilder);
            }
            int sqlLength = sqlBuilder.Length;

            if (sqlLength - signIndex == 5 && sqlBuilder.ToString().EndsWith("null"))
            {
                OperatorParser(expression.NodeType, signIndex, sqlBuilder, true);
            }
            else
            {
                OperatorParser(expression.NodeType, signIndex, sqlBuilder);
            }

            return(sqlBuilder);
        }
Пример #7
0
 protected override SqlBuilder Where(UnaryExpression expression, SqlBuilder sqlBuilder)
 {
     Expression2SqlProvider.Where(expression.Operand, sqlBuilder);
     return(sqlBuilder);
 }
Пример #8
0
 protected override SqlBuilder Where(ParameterExpression expression, SqlBuilder sqlBuilder)
 {
     Expression2SqlProvider.Where(expression, sqlBuilder);
     return(sqlBuilder);
 }
Пример #9
0
 private static void InnerIn(MethodCallExpression expression, SqlBuilder sqlBuilder)
 {
     Expression2SqlProvider.Where(expression.Arguments[0], sqlBuilder);
     sqlBuilder += " in";
     Expression2SqlProvider.In(expression.Arguments[1], sqlBuilder);
 }