Esempio n. 1
0
        public static void AssertSqlToken(Token statement, string expectedOutcome)
        {
            var actual = SqlServerVisitor.Compile(statement).Value;

            Assert.IsNotNull(actual);
            Assert.AreEqual(expectedOutcome, actual);
        }
Esempio n. 2
0
        private string ToBaseSql(QueryItem query, IAmlSqlWriterSettings settings)
        {
            using (var writer = new StringWriter())
            {
                var visitor = new SqlServerVisitor(writer, settings);
                var clone   = new CloneVisitor().WithPropertyMapper(p =>
                {
                    var table = p.Table;
                    table.TryFillName(settings);
                    if (string.IsNullOrEmpty(table.Type))
                    {
                        return(IgnoreNode.Instance);
                    }
                    var props = settings.GetProperties(table.Type);
                    if (props.Count < 1)
                    {
                        return(p);
                    }
                    if (!props.TryGetValue(p.Name, out var propDefn))
                    {
                        return(IgnoreNode.Instance);
                    }
                    if (propDefn.DataType().Value == "foreign")
                    {
                        return(table.GetProperty(propDefn));
                    }
                    return(p);
                }).Clone(query);
                visitor.Visit(clone);

                writer.Flush();
                return(writer.ToString());
            }
        }
Esempio n. 3
0
        private static void Main(string[] args)
        {
            //Expression<Func<User, int>> userLambda = (User u) => u.Age;

            var p = Expression.Parameter(typeof(User), "m");
            var memberExpression = Expression.Property(p, "Name");
            var expression       = Expression.Lambda(memberExpression, p);

            Console.WriteLine(expression);

            //Func<int, int, int> calculate = (x, y) => { return x + y; };//计算x+y的lambda
            //Console.WriteLine(calculate(1, 2).ToString());//输出3
            //Console.WriteLine(calculate(2, 5).ToString());//输出7

            //ParameterExpression leftExpression = Expression.Parameter(typeof(int), "m");//int类型的,参数名称为m
            //ConstantExpression rightExpression = Expression.Constant(10, typeof(int));//常量表达式树,10
            ////进行左边是否大于右边的判断
            //var binaryExpression =Expression.GreaterThan(leftExpression, rightExpression);
            //Console.WriteLine(binaryExpression.ToString());
            //var lambda =Expression.Lambda<Func<int,bool>>(binaryExpression, leftExpression).Compile();//构建成lambda表达式
            //Console.WriteLine(lambda(5).ToString());

            //ParameterExpression left1Expression= Expression.Parameter(typeof(int), "a");//int类型的,参数名称为a
            //ParameterExpression right1Expression = Expression.Parameter(typeof(int), "b");//int类型的,参数名称为b
            //var aAndbExpression = Expression.Add(left1Expression, right1Expression);//进行相加拼接
            //ParameterExpression cExpression= Expression.Parameter(typeof(int), "c");//int类型的,参数名称为c
            //var finallyExpression = Expression.GreaterThan(aAndbExpression, cExpression);
            //Console.WriteLine(finallyExpression.ToString());
            //var finallyLambda= Expression.Lambda<Func<int,int,int, bool>>(finallyExpression, left1Expression, right1Expression, cExpression).Compile();//构建成lambda表达式
            //Console.WriteLine(finallyLambda(1, 6, 10).ToString());


            int[] ages = new int[] { 1, 2, 5, 67 };
            //Expression<Func<User, bool>> expression2 = m => (m.Age == 10 && m.Address.StartsWith("浙江") && m.Address.Contains("省") && m.Address.EndsWith("省")) || (m.Sex == 0 || "" == m.Address && ages.Contains(m.Age) && m.Age == ages[3]);
            //Expression<Func<User, bool>> expression2 = m => m.Address.TrimStart() == "11" && m.Name.TrimEnd() == "3434" && m.Age == 1 && m.IsDelete == true;
            Expression <Func <User, bool> > expression2 = m => GetAge() ? m.Address == "" : m.Age == 1;

            //Expression<Func<User, bool>> expression2 = m => m.Age == 10 && m.Age == 1 && m.Sex == GeneralType.Man && Convert.ToInt32("1") == 1;
            SqlServerVisitor sqlVisitor = new SqlServerVisitor("A.");
            var sqlMember = sqlVisitor.GetSqlWhere(expression2.Body);

            Console.WriteLine(sqlMember.Item1);
            if (sqlMember.Item2 != null)
            {
                foreach (var item in sqlMember.Item2)
                {
                    Console.WriteLine($"{item?.ParameterName},{item?.Value}");
                }
            }

            Console.Read();
        }
Esempio n. 4
0
 public override Name GetTemporaryTableName(Name name = null)
 {
     return(SqlServerVisitor.GetTempTableName(name ?? Sql.Name(Guid.NewGuid().ToString("N"))));
 }