protected override MemberAssignment VisitMemberAssignment(MemberAssignment assignment) { Write(TableAlias + _leftBracket + AtkTypeHelper.GetColumnAlias <T>(assignment.Member.Name) + _rightBracket); Write(" = "); Visit(assignment.Expression); return(assignment); }
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); }
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)); }