示例#1
0
        public void TestJoinVisitor()
        {
            visitor = new JoinVisitor(provider, option, new List <IFuncVisit>());
            ((JoinVisitor)visitor).SetTableName(typeof(Students));
            Expression <Func <Peoples, Students, bool> > ex = (p, s) => s.PeopleId == p.Id;

            visitor.Visit(ex);
            var sql = new StringBuilder(visitor.GetSql().ToString().Trim());

            _queryBuilder.RenameTableType(sql, visitor.GetTableDic(), null, null);
            Assert.AreEqual("join `Students` on `Students`.`PeopleId` = `Peoples`.`Id`", sql.ToString());
        }
示例#2
0
        public void TestParamers()
        {
            visitor = new WhereVisitor(provider, option, new List <IFuncVisit>());
            Expression <Func <Peoples, bool> > ex = t => t.Id == "1";
            var a      = visitor.Visit(ex);
            var sql    = visitor.GetSql().ToString().Trim();
            var parmas = visitor.GetParameters();

            Assert.AreEqual(1, parmas.Count());
            Assert.AreEqual("1", parmas.First().Value);
            // Assert.AreEqual("`Peoples`.`Id` = @p0", sql);
        }
示例#3
0
        public void TestSelectVisitor()
        {
            visitor = new SelectVisitor(provider, option, new List <IFuncVisit>());
            Expression <Func <Peoples, object> > ex = t => new { NewName = t.Name, NewAge = t.Age };
            var a   = visitor.Visit(ex);
            var sql = new StringBuilder(visitor.GetSql().ToString().Trim());

            _queryBuilder.RenameTableType(sql, visitor.GetTableDic(), null);
            Assert.AreEqual("select `Peoples`.`Name` as NewName,`Peoples`.`Age` as NewAge from", sql.ToString());
            ex = t => t.Age;
            visitor.Visit(ex);
            sql = new StringBuilder(visitor.GetSql().ToString().Trim());
            _queryBuilder.RenameTableType(sql, visitor.GetTableDic(), null);
            Assert.AreEqual("select `Peoples`.`Age` from", sql.ToString());

            Expression <Func <Peoples, Students, object> > ex2 = (p, s) => new { NewName = p.Name, NewAge = p.Age, s.ClassId };

            a   = visitor.Visit(ex2);
            sql = new StringBuilder(visitor.GetSql().ToString().Trim());
            _queryBuilder.RenameTableType(sql, visitor.GetTableDic(), null);
            Assert.AreEqual("select `Peoples`.`Name` as NewName,`Peoples`.`Age` as NewAge,`Students`.`ClassId` as ClassId from", sql.ToString());
        }
示例#4
0
        public void TestWhereVisitor()
        {
            option.IsUseParamers = false;
            visitor = new WhereVisitor(provider, option, new List <IFuncVisit>());
            Expression <Func <Peoples, bool> > ex = t => t.Id == "1";
            var a   = visitor.Visit(ex);
            var sql = new StringBuilder(visitor.GetSql().ToString().Trim());

            _queryBuilder.RenameTableType(sql, visitor.GetTableDic(), null, null);

            Assert.AreEqual("`Peoples`.`Id` = '1'", sql.ToString());

            ex = t => t.Age == 1;
            visitor.Visit(ex);
            sql = new StringBuilder(visitor.GetSql().ToString().Trim());
            _queryBuilder.RenameTableType(sql, visitor.GetTableDic(), null, null);
            Assert.AreEqual("`Peoples`.`Age` = 1", sql.ToString());

            int[] array = new int[] { 1, 10, 2 };

            ex = t => array.Contains(t.Age);
            visitor.Visit(ex);
            sql = new StringBuilder(visitor.GetSql().ToString().Trim());
            _queryBuilder.RenameTableType(sql, visitor.GetTableDic(), null, null);
            Assert.AreEqual("`Peoples`.`Age` in (1,10,2)", sql.ToString());

            const string name = "aaa";

            ex = t => t.Name.Contains(name);
            visitor.Visit(ex);
            sql = new StringBuilder(visitor.GetSql().ToString().Trim());
            _queryBuilder.RenameTableType(sql, visitor.GetTableDic(), null, null);
            Assert.AreEqual("`Peoples`.`Name` like '%aaa%'", sql.ToString());

            ex = t => t.Name.StartsWith(name);
            visitor.Visit(ex);
            sql = new StringBuilder(visitor.GetSql().ToString().Trim());
            _queryBuilder.RenameTableType(sql, visitor.GetTableDic(), null, null);
            Assert.AreEqual("`Peoples`.`Name` like '%aaa'", sql.ToString());

            ex = t => t.Name.EndsWith(name);
            visitor.Visit(ex);
            sql = new StringBuilder(visitor.GetSql().ToString().Trim());
            _queryBuilder.RenameTableType(sql, visitor.GetTableDic(), null, null);
            Assert.AreEqual("`Peoples`.`Name` like 'aaa%'", sql.ToString());

            ex = t => t.Name == null;
            visitor.Visit(ex);
            sql = new StringBuilder(visitor.GetSql().ToString().Trim());
            _queryBuilder.RenameTableType(sql, visitor.GetTableDic(), null, null);
            Assert.AreEqual("`Peoples`.`Name` is null", sql.ToString());

            ex = t => t.Name != null;

            visitor.Visit(ex);
            sql = new StringBuilder(visitor.GetSql().ToString().Trim());
            _queryBuilder.RenameTableType(sql, visitor.GetTableDic(), null, null);
            Assert.AreEqual("`Peoples`.`Name` is not null", sql.ToString());
            ex = t => t.Age != 1;
            visitor.Visit(ex);
            sql = new StringBuilder(visitor.GetSql().ToString().Trim());
            _queryBuilder.RenameTableType(sql, visitor.GetTableDic(), null, null);
            Assert.AreEqual("`Peoples`.`Age` != 1", sql.ToString());

            ex = t => t.Age == 1 && t.Name == "1";
            visitor.Visit(ex);
            sql = new StringBuilder(visitor.GetSql().ToString().Trim());
            _queryBuilder.RenameTableType(sql, visitor.GetTableDic(), null, null);
            Assert.AreEqual("`Peoples`.`Age` = 1 and `Peoples`.`Name` = '1'", sql.ToString());
        }