protected override DbExpression VisitJoinExpression(DbJoinExpression joinExpression)
{
string body;
switch (joinExpression.JoinExpressionType)
{
case DbJoinExpressionType.InnerJoin:
body = "INNER JOIN {0} ON {1}";
break;
case DbJoinExpressionType.LeftOuterJoin:
body = "LEFT OUTER JOIN {0} ON {1}";
break;
case DbJoinExpressionType.RightOuterJoin:
body = "RIGHT OUTER JOIN {0} ON {1}";
break;
default:
throw new ArgumentOutOfRangeException("joinExpression",
string.Format(
"The JoinExpressionType '{0}' is not supported",
joinExpression.JoinExpressionType));
}
string syntax = string.Format(body, Visit(joinExpression.Target), Visit(joinExpression.Condition));
return ExpressionFactory.Sql(syntax);
}