public static Sql On <TLeft, TRight>(this Sql.SqlJoinClause sql, Expression <Func <TLeft, object> > leftMember, Expression <Func <TRight, object> > rightMember, params object[] args) { var leftType = typeof(TLeft); var rightType = typeof(TRight); var leftTableName = leftType.FirstAttribute <TableNameAttribute>().Value; var rightTableName = rightType.FirstAttribute <TableNameAttribute>().Value; var left = ExpressionHelper.FindProperty(leftMember) as PropertyInfo; var right = ExpressionHelper.FindProperty(rightMember) as PropertyInfo; var leftColumnName = left.FirstAttribute <ColumnAttribute>().Name; var rightColumnName = right.FirstAttribute <ColumnAttribute>().Name; string onClause = string.Format("{0}.{1} = {2}.{3}", SqlSyntaxContext.SqlSyntaxProvider.GetQuotedTableName(leftTableName), SqlSyntaxContext.SqlSyntaxProvider.GetQuotedColumnName(leftColumnName), SqlSyntaxContext.SqlSyntaxProvider.GetQuotedTableName(rightTableName), SqlSyntaxContext.SqlSyntaxProvider.GetQuotedColumnName(rightColumnName)); return(sql.On(onClause)); }
public static Sql On <TLeft, TRight>(this Sql.SqlJoinClause sql, ISqlSyntaxProvider sqlSyntax, Expression <Func <TLeft, object> > leftMember, Expression <Func <TRight, object> > rightMember, params object[] args) { var leftType = typeof(TLeft); var rightType = typeof(TRight); var leftTableName = leftType.GetTableName(); var rightTableName = rightType.GetTableName(); var leftColumn = ExpressionHelper.FindProperty(leftMember) as PropertyInfo; var rightColumn = ExpressionHelper.FindProperty(rightMember) as PropertyInfo; var leftColumnName = leftColumn.GetColumnName(); var rightColumnName = rightColumn.GetColumnName(); string onClause = string.Format("{0}.{1} = {2}.{3}", sqlSyntax.GetQuotedTableName(leftTableName), sqlSyntax.GetQuotedColumnName(leftColumnName), sqlSyntax.GetQuotedTableName(rightTableName), sqlSyntax.GetQuotedColumnName(rightColumnName)); return(sql.On(onClause)); }