示例#1
0
        public override ISqlParam ToList(int top = 0, bool isDistinct = false, bool isRand = false)
        {
            var strSelectSql  = SelectVisitor.Visit(ExpBuilder.ExpSelect);
            var strWhereSql   = WhereVisitor.Visit(ExpBuilder.ExpWhere);
            var strOrderBySql = OrderByVisitor.Visit(ExpBuilder.ExpOrderBy);

            var strTopSql      = top > 0 ? $"TOP {top}" : string.Empty;
            var strDistinctSql = isDistinct ? "Distinct " : string.Empty;
            var randField      = ",Rnd(-(TestID+\" & Rnd() & \")) as newid";

            if (!string.IsNullOrWhiteSpace(strWhereSql))
            {
                strWhereSql = "WHERE " + strWhereSql;
            }
            if (!string.IsNullOrWhiteSpace(strOrderBySql))
            {
                strOrderBySql = "ORDER BY " + strOrderBySql;
            }

            if (!isRand)
            {
                Sql.Append($"SELECT {strDistinctSql}{strTopSql} {strSelectSql} FROM {DbProvider.KeywordAegis(Name)} {strWhereSql} {strOrderBySql}");
            }
            else if (!isDistinct && string.IsNullOrWhiteSpace(strOrderBySql))
            {
                Sql.Append($"SELECT {strSelectSql}{randField} FROM {DbProvider.KeywordAegis(Name)} {strWhereSql} BY Rnd(-(TestID+\" & Rnd() & \")) {strTopSql}");
            }
            else
            {
                Sql.Append($"SELECT *{randField} FROM (SELECT {strDistinctSql} {strSelectSql} FROM {DbProvider.KeywordAegis(Name)} {strWhereSql} {strOrderBySql}) s BY Rnd(-(TestID+\" & Rnd() & \")) {strTopSql}");
            }
            return(this);
        }
示例#2
0
        public virtual ISqlParam ToList(int top = 0, bool isDistinct = false, bool isRand = false)
        {
            var strSelectSql   = SelectVisitor.Visit(ExpBuilder.ExpSelect);
            var strWhereSql    = WhereVisitor.Visit(ExpBuilder.ExpWhere);
            var strOrderBySql  = OrderByVisitor.Visit(ExpBuilder.ExpOrderBy);
            var strTopSql      = top > 0 ? string.Format("TOP {0} ", top) : string.Empty;
            var strDistinctSql = isDistinct ? "Distinct " : string.Empty;

            if (!string.IsNullOrWhiteSpace(strWhereSql))
            {
                strWhereSql = "WHERE " + strWhereSql;
            }
            if (!string.IsNullOrWhiteSpace(strOrderBySql))
            {
                strOrderBySql = "ORDER BY " + strOrderBySql;
            }

            if (!isRand)
            {
                Sql.AppendFormat("SELECT {0}{1}{2} FROM {3} {4} {5}", strDistinctSql, strTopSql, strSelectSql, DbProvider.KeywordAegis(Name), strWhereSql, strOrderBySql);
            }
            else if (string.IsNullOrWhiteSpace(strOrderBySql))
            {
                Sql.AppendFormat("SELECT {0}{1}{2}{5} FROM {3} {4} ORDER BY NEWID()", strDistinctSql, strTopSql, strSelectSql, DbProvider.KeywordAegis(Name), strWhereSql, isDistinct ? ",NEWID() as newid" : "");
            }
            else
            {
                Sql.AppendFormat("SELECT {2} FROM (SELECT {0} {1} *{6} FROM {3} {4} ORDER BY NEWID()) a {5}", strDistinctSql, strTopSql, strSelectSql, DbProvider.KeywordAegis(Name), strWhereSql, strOrderBySql, isDistinct ? ",NEWID() as newid" : "");
            }
            return(this);
        }
        public override ISqlParam ToList(int top = 0, bool isDistinct = false, bool isRand = false)
        {
            var strSelectSql  = SelectVisitor.Visit(ExpBuilder.ExpSelect);
            var strWhereSql   = WhereVisitor.Visit(ExpBuilder.ExpWhere);
            var strOrderBySql = OrderByVisitor.Visit(ExpBuilder.ExpOrderBy);

            var strTopSql      = top > 0 ? $"rownum <={top}" : string.Empty;
            var strDistinctSql = isDistinct ? "Distinct " : string.Empty;

            if (!string.IsNullOrWhiteSpace(strWhereSql))
            {
                strWhereSql = "WHERE " + strWhereSql;
            }
            if (!string.IsNullOrWhiteSpace(strOrderBySql))
            {
                strOrderBySql = "ORDER BY " + strOrderBySql;
            }

            if (!isRand)
            {
                Sql.Append($"SELECT {strDistinctSql}{strSelectSql} FROM {DbProvider.KeywordAegis(Name)} {strWhereSql} {strOrderBySql} {strTopSql}");
            }
            else if (string.IsNullOrWhiteSpace(strOrderBySql))
            {
                Sql.Append(string.Format("SELECT {0}{1}{5} FROM {2} {3} ORDER BY dbms_random.value {4}", strDistinctSql, strSelectSql, DbProvider.KeywordAegis(Name), strWhereSql, strTopSql, isDistinct ? ",dbms_random.value as newid" : ""));
            }
            else
            {
                Sql.Append(string.Format("SELECT {1} FROM (SELECT {0}*{6} FROM {2} {3} ORDER BY dbms_random.value {5}) a {4}", strDistinctSql, strSelectSql, DbProvider.KeywordAegis(Name), strWhereSql, strOrderBySql, strTopSql, isDistinct ? ",dbms_random.value as newid" : ""));
            }
            return(this);
        }
示例#4
0
        public override ISqlParam ToList(int pageSize, int pageIndex, bool isDistinct = false)
        {
            // 不分页
            if (pageIndex == 1)
            {
                ToList(pageSize, isDistinct);
                return(this);
            }

            var strSelectSql  = SelectVisitor.Visit(ExpBuilder.ExpSelect);
            var strWhereSql   = WhereVisitor.Visit(ExpBuilder.ExpWhere);
            var strOrderBySql = OrderByVisitor.Visit(ExpBuilder.ExpOrderBy);

            var strDistinctSql = isDistinct ? "Distinct" : string.Empty;

            if (!string.IsNullOrWhiteSpace(strWhereSql))
            {
                strWhereSql = "WHERE " + strWhereSql;
            }

            Check.IsTure(string.IsNullOrWhiteSpace(strOrderBySql) && (ExpBuilder.SetMap.PhysicsMap.PrimaryFields.Count == 0), "不指定排序字段时,需要设置主键ID");

            strOrderBySql = "ORDER BY " + (string.IsNullOrWhiteSpace(strOrderBySql) ? $"{ConvertHelper.ToString(ExpBuilder.SetMap.PhysicsMap.PrimaryFields.Select(o => o.Value.Name), ",")} ASC" : strOrderBySql);

            Sql.Append(string.Format("SELECT {1} FROM (SELECT {0} {1},ROW_NUMBER() OVER({2}) as Row FROM {3} {4}) a WHERE Row BETWEEN {5} AND {6};", strDistinctSql, strSelectSql, strOrderBySql, Name, strWhereSql, (pageIndex - 1) * pageSize + 1, pageIndex * pageSize));
            return(this);
        }
示例#5
0
        public override ISqlParam ToList(int top = 0, bool isDistinct = false, bool isRand = false)
        {
            var strSelectSql  = SelectVisitor.Visit(ExpBuilder.ExpSelect);
            var strWhereSql   = WhereVisitor.Visit(ExpBuilder.ExpWhere);
            var strOrderBySql = OrderByVisitor.Visit(ExpBuilder.ExpOrderBy);

            var strDistinctSql = isDistinct ? "Distinct " : string.Empty;
            var randField      = ",dbms_random.value as newid";

            if (!string.IsNullOrWhiteSpace(strWhereSql))
            {
                strWhereSql = "WHERE " + strWhereSql;
            }
            if (!string.IsNullOrWhiteSpace(strOrderBySql))
            {
                strOrderBySql = "ORDER BY " + strOrderBySql;
            }

            if (!isRand)
            {
                Sql.Append(BuilderTop(top, $"SELECT {strDistinctSql}{strSelectSql} FROM {DbProvider.KeywordAegis(Name)} {strWhereSql} {strOrderBySql}"));
            }
            else if (!isDistinct && string.IsNullOrWhiteSpace(strOrderBySql))
            {
                Sql.Append(BuilderTop(top, $"SELECT {strSelectSql}{randField} FROM {DbProvider.KeywordAegis(Name)} {strWhereSql} ORDER BY dbms_random.value"));
            }
            else
            {
                Sql.Append(BuilderTop(top, $"SELECT * {randField} FROM (SELECT {strDistinctSql} {strSelectSql} FROM {DbProvider.KeywordAegis(Name)} {strWhereSql} {strOrderBySql}) s ORDER BY dbms_random.value"));
            }
            return(this);
        }
示例#6
0
        public override ISqlParam ToList(int pageSize, int pageIndex, bool isDistinct = false)
        {
            // 不分页
            if (pageIndex == 1)
            {
                ToList(pageSize, isDistinct);
                return(this);
            }

            var strSelectSql  = SelectVisitor.Visit(ExpBuilder.ExpSelect);
            var strWhereSql   = WhereVisitor.Visit(ExpBuilder.ExpWhere);
            var strOrderBySql = OrderByVisitor.Visit(ExpBuilder.ExpOrderBy);

            var strDistinctSql = isDistinct ? "Distinct " : string.Empty;

            if (!string.IsNullOrWhiteSpace(strWhereSql))
            {
                strWhereSql = "WHERE " + strWhereSql;
            }
            if (!string.IsNullOrWhiteSpace(strOrderBySql))
            {
                strOrderBySql = "ORDER BY " + strOrderBySql;
            }

            Sql.Append($"SELECT {strDistinctSql}{strSelectSql} FROM {DbProvider.KeywordAegis(Name)} {strWhereSql} {strOrderBySql} LIMIT {pageSize} OFFSET {pageSize * (pageIndex - 1)}");
            return(this);
        }
        public override ISqlParam ToList(int pageSize, int pageIndex, bool isDistinct = false)
        {
            // 不分页
            if (pageIndex == 1)
            {
                ToList(pageSize, isDistinct);
                return(this);
            }

            var strSelectSql  = SelectVisitor.Visit(ExpBuilder.ExpSelect);
            var strWhereSql   = WhereVisitor.Visit(ExpBuilder.ExpWhere);
            var strOrderBySql = OrderByVisitor.Visit(ExpBuilder.ExpOrderBy);

            var strDistinctSql = isDistinct ? "Distinct" : string.Empty;

            Check.IsTure(string.IsNullOrWhiteSpace(strOrderBySql) && ExpBuilder.SetMap.PhysicsMap.PrimaryFields.Count == 0, "不指定排序字段时,需要设置主键ID");

            strOrderBySql = "ORDER BY " + (string.IsNullOrWhiteSpace(strOrderBySql) ? $"{ConvertHelper.ToString(ExpBuilder.SetMap.PhysicsMap.PrimaryFields.Select(o => o.Value.Name), ",")} ASC" : strOrderBySql);
            var strOrderBySqlReverse = strOrderBySql.Replace(" DESC", " [倒序]").Replace("ASC", "DESC").Replace("[倒序]", "ASC");

            if (!string.IsNullOrWhiteSpace(strWhereSql))
            {
                strWhereSql = "WHERE " + strWhereSql;
            }

            Sql.Append(string.Format("SELECT {0} TOP {2} {1} FROM (SELECT TOP {3} {1} FROM {4} {5} {6}) a  {7};", strDistinctSql, strSelectSql, pageSize, pageSize * pageIndex, Name, strWhereSql, strOrderBySql, strOrderBySqlReverse));
            return(this);
        }
示例#8
0
        public virtual ISqlParam ToList(int pageSize, int pageIndex, bool isDistinct = false)
        {
            // 不分页
            if (pageIndex == 1)
            {
                ToList(pageSize, isDistinct); return(this);
            }

            var strSelectSql   = SelectVisitor.Visit(ExpBuilder.ExpSelect);
            var strWhereSql    = WhereVisitor.Visit(ExpBuilder.ExpWhere);
            var strOrderBySql  = OrderByVisitor.Visit(ExpBuilder.ExpOrderBy);
            var strDistinctSql = isDistinct ? "Distinct " : string.Empty;

            Check.IsTure(string.IsNullOrWhiteSpace(strOrderBySql) && ExpBuilder.Map.FieldMap.PrimaryState.Key == null, "不指定排序字段时,需要设置主键ID");

            strOrderBySql = "ORDER BY " + (string.IsNullOrWhiteSpace(strOrderBySql) ? string.Format("{0} ASC", ExpBuilder.Map.FieldMap.PrimaryState.Value.FieldAtt.Name) : strOrderBySql);
            var strOrderBySqlReverse = strOrderBySql.Replace(" DESC", " [倒序]").Replace("ASC", "DESC").Replace("[倒序]", "ASC");

            if (!string.IsNullOrWhiteSpace(strWhereSql))
            {
                strWhereSql = "WHERE " + strWhereSql;
            }

            Sql.AppendFormat("SELECT {0}TOP {2} {1} FROM (SELECT TOP {3} * FROM {4} {5} {6}) a  {7};", strDistinctSql, strSelectSql, pageSize, pageSize * pageIndex, Name, strWhereSql, strOrderBySql, strOrderBySqlReverse);
            return(this);
        }
示例#9
0
        public override ISqlParam ToList(int pageSize, int pageIndex, bool isDistinct = false)
        {
            // 不分页
            if (pageIndex == 1)
            {
                ToList(pageSize, isDistinct); return(this);
            }

            var strSelectSql  = SelectVisitor.Visit(ExpBuilder.ExpSelect);
            var strWhereSql   = WhereVisitor.Visit(ExpBuilder.ExpWhere);
            var strOrderBySql = OrderByVisitor.Visit(ExpBuilder.ExpOrderBy);

            var strDistinctSql = isDistinct ? "Distinct " : string.Empty;

            if (string.IsNullOrWhiteSpace(strSelectSql))
            {
                strSelectSql = "*";
            }
            if (!string.IsNullOrWhiteSpace(strWhereSql))
            {
                strWhereSql = "WHERE " + strWhereSql;
            }
            if (!string.IsNullOrWhiteSpace(strOrderBySql))
            {
                strOrderBySql = "ORDER BY " + strOrderBySql;
            }

            Sql.AppendFormat("SELECT {0}{1} FROM {2} {3} {4} LIMIT {5},{6}", strDistinctSql, strSelectSql, DbProvider.KeywordAegis(Name), strWhereSql, strOrderBySql, pageSize * (pageIndex - 1), pageSize);
            return(this);
        }
示例#10
0
        public void Null_Test()
        {
            Expression <Func <Entity, bool> > expression = x => x.Flag == null;
            var statement = WhereWriter <Entity> .CreateStatement(WhereVisitor <Entity> .CreateModel(expression.Body), Map);

            statement.Parameters.Count().ShouldEqual(0);
            statement.Text.ShouldEqual("([flag] IS NULL)");
        }
示例#11
0
        public void should_generate_sql_for_ends_with_equals_false()
        {
            Expression <Func <Entity, bool> > expression = x => x.Name.EndsWith("ed") == false;
            var statement = WhereWriter <Entity> .CreateStatement(WhereVisitor <Entity> .CreateModel(expression.Body), Map);

            statement.Parameters.Count().ShouldEqual(1);
            statement.Parameters.First().Value.ShouldEqual("ed");
            statement.Text.ShouldEqual(string.Format("([name] NOT LIKE '%' + @{0})", statement.Parameters.First().Key));
        }
示例#12
0
        public void Or_Test()
        {
            Expression <Func <Entity, bool> > expression = x => x.Age == 10 || x.Flag != null;
            var statement = WhereWriter <Entity> .CreateStatement(WhereVisitor <Entity> .CreateModel(expression.Body), Map);

            statement.Parameters.Count().ShouldEqual(1);
            statement.Parameters.First().Value.ShouldEqual(10);
            statement.Text.ShouldEqual($"(([age] = @{statement.Parameters.First().Key}) OR ([flag] IS NOT NULL))");
        }
示例#13
0
        public void Unary_True_Test()
        {
            Expression <Func <Entity, bool> > expression = x => x.Active;
            var statement = WhereWriter <Entity> .CreateStatement(WhereVisitor <Entity> .CreateModel(expression.Body), Map);

            statement.Parameters.Count().ShouldEqual(1);
            statement.Parameters.First().Value.ShouldEqual(true);
            statement.Text.ShouldEqual(string.Format("([active] = @{0})", statement.Parameters.First().Key));
        }
示例#14
0
        public void should_generate_sql_for_not_contains()
        {
            Expression <Func <Entity, bool> > expression = x => !x.Name.Contains("ed");
            var statement = WhereWriter <Entity> .CreateStatement(WhereVisitor <Entity> .CreateModel(expression.Body), Map);

            statement.Parameters.Count().ShouldEqual(1);
            statement.Parameters.First().Value.ShouldEqual("ed");
            statement.Text.ShouldEqual(string.Format("([name] NOT LIKE '%' + @{0} + '%')", statement.Parameters.First().Key));
        }
示例#15
0
        public void Less_Than_Or_Equal_Test()
        {
            Expression <Func <Entity, bool> > expression = x => x.Age <= 33;
            var statement = WhereWriter <Entity> .CreateStatement(WhereVisitor <Entity> .CreateModel(expression.Body), Map);

            statement.Parameters.Count().ShouldEqual(1);
            statement.Parameters.First().Value.ShouldEqual(33);
            statement.Text.ShouldEqual(string.Format("([age] <= @{0})", statement.Parameters.First().Key));
        }
示例#16
0
        public void Equals_Boolean_Expression_Test()
        {
            Expression <Func <Entity, bool> > expression = x => x.Active == (x.Age == 33);
            var statement = WhereWriter <Entity> .CreateStatement(WhereVisitor <Entity> .CreateModel(expression.Body), Map);

            statement.Parameters.Count().ShouldEqual(1);
            statement.Parameters.First().Value.ShouldEqual(33);
            statement.Text.ShouldEqual(string.Format("([active] = CASE WHEN ([age] = @{0}) THEN 1 ELSE 0 END)", statement.Parameters.First().Key));
        }
示例#17
0
        public void should_generate_sql_for_trim()
        {
            Expression <Func <Entity, bool> > expression = x => x.Name.Trim() == "ed";
            var statement = WhereWriter <Entity> .CreateStatement(WhereVisitor <Entity> .CreateModel(expression.Body), Map);

            statement.Parameters.Count().ShouldEqual(1);
            statement.Parameters.First().Value.ShouldEqual("ed");
            statement.Text.ShouldEqual(string.Format("(LTRIM(RTRIM([name])) = @{0})", statement.Parameters.First().Key));
        }
示例#18
0
        public void Modulo_Test()
        {
            Expression <Func <Entity, bool> > expression = x => x.Age % 20 == 55;
            var statement = WhereWriter <Entity> .CreateStatement(WhereVisitor <Entity> .CreateModel(expression.Body), Map);

            statement.Parameters.Count().ShouldEqual(2);
            statement.Parameters.First().Value.ShouldEqual(20);
            statement.Parameters.Skip(1).First().Value.ShouldEqual(55);
            statement.Text.ShouldEqual(string.Format("(([age] % @{0}) = @{1})", statement.Parameters.First().Key, statement.Parameters.Skip(1).First().Key));
        }
示例#19
0
        public void should_not_cast_dynamic_value()
        {
            var optout = (object)true;
            Expression <Func <Entity, bool> > expression = x => x.Values["optout"] == optout;
            var statement = WhereWriter <Entity> .CreateStatement(WhereVisitor <Entity> .CreateModel(expression.Body), Map);

            statement.Parameters.Count().ShouldEqual(1);
            statement.Parameters.First().Value.ShouldEqual(true);
            statement.Text.ShouldEqual(string.Format("([optout] = @{0})", statement.Parameters.First().Key));
        }
示例#20
0
        public QueryVisitor(IEntityMapper mapper, WhereVisitor whereVisitor, ProjectorVisitor projectorVisitor)
        {
            this.mapper = mapper;

            this.whereVisitor = whereVisitor;
            this.projectorVisitor = projectorVisitor;

            //TODO: Refactoring
            this.whereVisitor.Mapper = mapper;
            this.projectorVisitor.Mapper = mapper;
        }
示例#21
0
        public void Not_Bool_Test()
        {
            Expression <Func <Entity, bool> > expression = x => !x.Active && !(bool)x.Values["optout"];
            var statement = WhereWriter <Entity> .CreateStatement(WhereVisitor <Entity> .CreateModel(expression.Body), Map);

            statement.Parameters.Count().ShouldEqual(2);
            statement.Parameters.First().Value.ShouldEqual(false);
            statement.Parameters.Skip(1).First().Value.ShouldEqual(false);
            statement.Text.ShouldEqual(string.Format("(([active] = @{0}) AND (CAST([optout] AS bit) = @{1}))",
                                                     statement.Parameters.First().Key,
                                                     statement.Parameters.Skip(1).First().Key));
        }
示例#22
0
        public void Not_Expression_Test()
        {
            Expression <Func <Entity, bool> > expression = x => !(x.Age == 33);
            var statement = WhereWriter <Entity> .CreateStatement(WhereVisitor <Entity> .CreateModel(expression.Body), Map);

            statement.Parameters.Count().ShouldEqual(2);
            statement.Parameters.First().Value.ShouldEqual(33);
            statement.Parameters.Skip(1).First().Value.ShouldEqual(false);
            statement.Text.ShouldEqual(string.Format("(CASE WHEN ([age] = @{0}) THEN 1 ELSE 0 END = @{1})",
                                                     statement.Parameters.First().Key,
                                                     statement.Parameters.Skip(1).First().Key));
        }
示例#23
0
        public void Equals_Constant_Test()
        {
            Expression <Func <Entity, bool> > where = x => x.Name == "Jeff";

            var whereClause = WhereVisitor <Entity> .CreateModel(where.Body);

            whereClause.LeftOperand.Type.ShouldEqual(Operand.OperandType.Projection);

            whereClause.Type.ShouldEqual(Operator.OperatorType.Equal);

            whereClause.RightOperand.Type.ShouldEqual(Operand.OperandType.Projection);
        }
示例#24
0
        public void Equals_Boolean_Not_Equals_Test()
        {
            Expression <Func <Entity, bool> > where = x => x.Active == false;

            var whereClause = WhereVisitor <Entity> .CreateModel(where.Body);

            whereClause.LeftOperand.Type.ShouldEqual(Operand.OperandType.Projection);

            whereClause.Type.ShouldEqual(Operator.OperatorType.Equal);

            whereClause.RightOperand.Type.ShouldEqual(Operand.OperandType.Projection);
        }
示例#25
0
        public virtual ISqlParam Delete()
        {
            var strWhereSql = WhereVisitor.Visit(ExpBuilder.ExpWhere);

            if (!string.IsNullOrWhiteSpace(strWhereSql))
            {
                strWhereSql = "WHERE " + strWhereSql;
            }

            Sql.AppendFormat("DELETE FROM {0} {1}", DbProvider.KeywordAegis(Name), strWhereSql);
            return(this);
        }
示例#26
0
        public void Equals_Boolean_Expression_Test()
        {
            Expression <Func <Entity, bool> > where = x => x.Active;
            var whereClause = WhereVisitor <Entity> .CreateModel(where.Body);

            whereClause.LeftOperand.Type.ShouldEqual(Operand.OperandType.Projection);

            whereClause.Type.ShouldEqual(Operator.OperatorType.Equal);

            whereClause.RightOperand.Type.ShouldEqual(Operand.OperandType.Projection);
            whereClause.RightOperand.Projection.Type.ShouldEqual(Projection.ProjectionType.Constant);
            whereClause.RightOperand.Projection.Constant.Value.ShouldEqual(true);
        }
示例#27
0
        public virtual ISqlParam Count(bool isDistinct = false)
        {
            var strWhereSql    = WhereVisitor.Visit(ExpBuilder.ExpWhere);
            var strDistinctSql = isDistinct ? "Distinct " : string.Empty;

            if (!string.IsNullOrWhiteSpace(strWhereSql))
            {
                strWhereSql = "WHERE " + strWhereSql;
            }

            Sql.AppendFormat("SELECT {0}Count(0) FROM {1} {2}", strDistinctSql, DbProvider.KeywordAegis(Name), strWhereSql);
            return(this);
        }
示例#28
0
        public void Method_Boolean_Not_Expression_Test()
        {
            Expression <Func <Entity, bool> > where = x => !x.Name.Contains("t");
            var whereClause = WhereVisitor <Entity> .CreateModel(where.Body);

            whereClause.LeftOperand.Type.ShouldEqual(Operand.OperandType.Projection);

            whereClause.Type.ShouldEqual(Operator.OperatorType.Equal);

            whereClause.RightOperand.Type.ShouldEqual(Operand.OperandType.Projection);
            whereClause.RightOperand.Projection.Type.ShouldEqual(Projection.ProjectionType.Constant);
            whereClause.RightOperand.Projection.Constant.Value.ShouldEqual(false);
        }
示例#29
0
        public void Not_Boolean_Object_Dictionary_Expression_Test()
        {
            Expression <Func <Entity, bool> > where = x => !(bool)x.Values["Disabled"];
            var whereClause = WhereVisitor <Entity> .CreateModel(where.Body);

            whereClause.LeftOperand.Type.ShouldEqual(Operand.OperandType.Projection);

            whereClause.Type.ShouldEqual(Operator.OperatorType.Equal);

            whereClause.RightOperand.Type.ShouldEqual(Operand.OperandType.Projection);
            whereClause.RightOperand.Projection.Type.ShouldEqual(Projection.ProjectionType.Constant);
            whereClause.RightOperand.Projection.Constant.Value.ShouldEqual(false);
        }
示例#30
0
        public virtual ISqlParam Update()
        {
            var strWhereSql = WhereVisitor.Visit(ExpBuilder.ExpWhere);
            var strAssemble = AssignVisitor.Visit(ExpBuilder.ExpAssign);

            // 主键如果有值、或者设置成只读条件,则自动转成条件
            if (!string.IsNullOrWhiteSpace(strWhereSql))
            {
                strWhereSql = "WHERE " + strWhereSql;
            }

            Sql.AppendFormat("UPDATE {0} SET {1} {2}", DbProvider.KeywordAegis(Name), strAssemble, strWhereSql);
            return(this);
        }
示例#31
0
        public virtual ISqlParam AddUp()
        {
            Check.IsTure(ExpBuilder.ExpAssign == null, "赋值的参数不能为空!");

            var strWhereSql = WhereVisitor.Visit(ExpBuilder.ExpWhere);
            var strAssemble = AssignVisitor.Visit(ExpBuilder.ExpAssign);

            if (!string.IsNullOrWhiteSpace(strWhereSql))
            {
                strWhereSql = "WHERE " + strWhereSql;
            }

            Sql.AppendFormat("UPDATE {0} SET {1} {2}", DbProvider.KeywordAegis(Name), strAssemble, strWhereSql);
            return(this);
        }
示例#32
0
 public void SetUp()
 {
     _api = _factory.Create<ILinqApi>();
     _visitor = new WhereVisitor();
     _user = _factory.Create<IUser>();
 }