public static void Serialize(JoinPart joinPart, BinaryWriter writer) { writer.Write((byte)joinPart.JoinType); if (joinPart.SubQuery != null) { writer.Write((byte)2); SqlExpression.Serialize(joinPart.SubQuery, writer); } else { writer.Write((byte)1); ObjectName.Serialize(joinPart.TableName, writer); } SqlExpression.Serialize(joinPart.OnExpression, writer); }
object IPreparable.Prepare(IExpressionPreparer preparer) { var clause = new FromClause(); // Prepare expressions in the JoiningSet first int size = joinParts.Count; for (int i = 0; i < size; ++i) { var part = joinParts[i]; var exp = part.OnExpression; if (exp != null) { exp = exp.Prepare(preparer); if (part.SubQuery != null) { part = new JoinPart(part.JoinType, part.SubQuery, exp); } else { part = new JoinPart(part.JoinType, part.TableName, exp); } } clause.joinParts.Add(part); } // Prepare the StatementTree sub-queries in the from tables for (int i = 0; i < fromTables.Count; i++) { var table = fromTables[i]; var preparedTable = (FromTable) ((IPreparable) table).Prepare(preparer); var tableAlias = tableNames[i]; clause.tableNames.Insert(i, tableAlias); clause.fromTables.Insert(i, preparedTable); } return clause; }
public static void MapComponentWithPrefix <T, TComponent>(this JoinPart <T> map, Expression <Func <T, TComponent> > f) { map.Component(f).ColumnPrefix(MemberUtility.GetMemberInfo(f).Name); }