Пример #1
0
 protected override MemberAssignment VisitMemberAssignment(MemberAssignment assignment)
 {
     Write(TableAlias + _leftBracket + AtkTypeHelper.GetColumnAlias <T>(assignment.Member.Name) + _rightBracket);
     Write(" = ");
     Visit(assignment.Expression);
     return(assignment);
 }
Пример #2
0
 protected override MemberMemberBinding VisitMemberMemberBinding(MemberMemberBinding binding)
 {
     Write(TableAlias + _leftBracket + AtkTypeHelper.GetColumnAlias <T>(binding.Member.Name) + _rightBracket);
     Write(" = {");
     WriteLine(Indentation.Inner);
     VisitBindingList(binding.Bindings);
     WriteLine(Indentation.Outer);
     Write("}");
     return(binding);
 }
 protected override MemberListBinding VisitMemberListBinding(MemberListBinding binding)
 {
     Write(_tableAlias + _leftbracket + AtkTypeHelper.GetColumnAlias <T>(binding.Member.Name) + _rightbracket);
     Write(" = {");
     WriteLine(Indentation.Inner);
     VisitElementInitializerList(binding.Initializers);
     WriteLine(Indentation.Outer);
     Write("}");
     return(binding);
 }
Пример #4
0
        protected override Expression VisitMemberAccess(MemberExpression m)
        {
            if (m.Member.DeclaringType == typeof(string))
            {
                Write(TableAlias + _leftBracket + AtkTypeHelper.GetColumnAlias <T>(m.Member.Name) + _rightBracket);
                if (m.Member.Name == "Length")
                {
                    Write("LEN(");
                    Visit(m.Expression);
                    Write(")");
                    return(m);
                }
            }
            else if (m.Member.DeclaringType != null && (m.Member.DeclaringType.IsGenericType &&
                                                        m.Member.DeclaringType.GetGenericTypeDefinition() == typeof(Nullable <>)))
            {
                if (m.Member.Name == "HasValue")
                {
                    Write("(");
                    Visit(m.Expression);
                    Write(" IS NOT NULL)");
                    return(m);
                }
            }
            else if (m.Member.DeclaringType == typeof(DateTime) || m.Member.DeclaringType == typeof(DateTimeOffset))
            {
                Write(TableAlias + _leftBracket + AtkTypeHelper.GetColumnAlias <T>(m.Member.Name) + _rightBracket);
                switch (m.Member.Name)
                {
                case "Day":
                    Write("DAY(");
                    Visit(m.Expression);
                    Write(")");
                    return(m);

                case "DayOfWeek":
                    Write("(DATEPART(weekday, ");
                    Visit(m.Expression);
                    Write(") - 1)");
                    return(m);

                case "DayOfYear":
                    Write("(DATEPART(dayofyear, ");
                    Visit(m.Expression);
                    Write(") - 1)");
                    return(m);

                case "Hour":
                    Write("DATEPART(hour, ");
                    Visit(m.Expression);
                    Write(")");
                    return(m);

                case "Millisecond":
                    Write("DATEPART(millisecond, ");
                    Visit(m.Expression);
                    Write(")");
                    return(m);

                case "Minute":
                    Write("DATEPART(minute, ");
                    Visit(m.Expression);
                    Write(")");
                    return(m);

                case "Month":
                    Write("MONTH(");
                    Visit(m.Expression);
                    Write(")");
                    return(m);

                case "Second":
                    Write("DATEPART(second, ");
                    Visit(m.Expression);
                    Write(")");
                    return(m);

                case "Year":
                    Write("YEAR(");
                    Visit(m.Expression);
                    Write(")");
                    return(m);
                }
            }
            else if (IsRight)
            {
                Write("@" + m.Member.Name);
            }
            else
            {
                Write(TableAlias + _leftBracket + AtkTypeHelper.GetColumnAlias <T>(m.Member.Name) + _rightBracket);
            }

            return(base.VisitMemberAccess(m));
        }