Beispiel #1
0
        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);
        }
Beispiel #2
0
        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);
 }