Ejemplo n.º 1
0
        private void JoinNonPrimary(IPropertyMap iPropertyMap)
        {
            foreach (IColumnMap idColumn in iPropertyMap.GetAllIdColumnMaps())
            {
                SqlTableAlias  thisTableAlias = this.sqlEmitter.Select.GetSqlTableAlias(idColumn.TableMap.Name);
                SqlColumnAlias thisColAlias   = thisTableAlias.GetSqlColumnAlias(idColumn.Name);

                SqlTableAlias  parentTableAlias = this.sqlEmitter.Select.GetSqlTableAlias(idColumn.PrimaryKeyTable);
                SqlColumnAlias parentColAlias   = parentTableAlias.GetSqlColumnAlias(idColumn.PrimaryKeyColumn);

                if (!joinedNonPrimaries.ContainsKey(thisColAlias))
                {
                    if (!(joinedNonPrimaries[thisColAlias] == parentColAlias))
                    {
                        SqlSearchCondition search = this.sqlEmitter.Select.SqlWhereClause.GetNextSqlSearchCondition();
                        search.GetSqlComparePredicate(parentColAlias, SqlCompareOperatorType.Equals, thisColAlias);

                        joinedNonPrimaries[thisColAlias] = parentColAlias;
                    }
                }
            }
        }
Ejemplo n.º 2
0
 public virtual void Visited(SqlTableAlias tableAlias)
 {
 }
Ejemplo n.º 3
0
        public virtual void GetPropertyColumnNamesAndAliases(IPropertyMap propertyMap, object hash, Hashtable columns, ArrayList order, string path, string propPath, string suggestion)
        {
            if (hash == null)
            {
                hash = propertyMap;
            }
            SqlTableAlias tbl           = sqlEmitter.GetTableAlias(propertyMap.MustGetTableMap(), hash);
            IList         columnAliases = new ArrayList();

            if (propertyMap.IsIdentity)
            {
                IClassMap  classMap      = propertyMap.ClassMap;
                IColumnMap typeColumnMap = classMap.GetTypeColumnMap();
                if (typeColumnMap != null)
                {
                    string         pathParent    = GetPathParent(path);
                    string         suggestedPath = pathParent.Length == 0 ? "NPersistTypeColumn" : pathParent + ".NPersistTypeColumn";
                    SqlColumnAlias column        = GetPropertyColumnAlias(tbl, suggestedPath, typeColumnMap, suggestedPath);
                    columnAliases.Add(column);
                }
            }

            if (suggestion == "")
            {
                suggestion = propPath;
            }
            //      bool hasTypeColumn = false;

            IPropertyMap inverse = propertyMap.GetInversePropertyMap();

            //Type column first
            if (inverse != null)
            {
                IColumnMap inverseTypeColumnMap = inverse.ClassMap.GetTypeColumnMap();
                foreach (IColumnMap columnMap in propertyMap.GetAllColumnMaps())
                {
                    if (inverseTypeColumnMap != null && inverseTypeColumnMap == columnMap.GetPrimaryKeyColumnMap())
                    {
                        string suggestionString;
                        suggestionString = propPath.Length == 0 ? "NPersistTypeColum" : propPath + ".NPersistTypeColumn";

                        SqlColumnAlias column = GetPropertyColumnAlias(tbl, path, columnMap, suggestionString);
                        columnAliases.Add(column);
                    }
                }
            }

            foreach (IColumnMap columnMap in propertyMap.GetAllColumnMaps())
            {
                if (inverse != null)
                {
                    IColumnMap inverseTypeColumnMap = inverse.ClassMap.GetTypeColumnMap();
                    if (inverseTypeColumnMap != null && inverseTypeColumnMap == columnMap.GetPrimaryKeyColumnMap())
                    {
                        continue;
                    }
                }

                string suggestionString;

                suggestionString = suggestion;

                SqlColumnAlias column = GetPropertyColumnAlias(tbl, path, columnMap, suggestionString);
                columnAliases.Add(column);
            }

            foreach (SqlColumnAlias column in columnAliases)
            {
                if (!(columns.ContainsKey(column)))
                {
                    columns[column] = column;
                    order.Add(column);

                    //Note: Important stuff, right here in nowhere-ville!!
                    if (this.sqlEmitter.PropertyColumnMap.ContainsKey(propPath))
                    {
                        ArrayList arrAliases;
                        if (this.sqlEmitter.PropertyColumnMap[propPath] is string)
                        {
                            arrAliases = new ArrayList();
                            arrAliases.Add(this.sqlEmitter.PropertyColumnMap[propPath]);
                            this.sqlEmitter.PropertyColumnMap[propPath] = arrAliases;
                        }
                        else
                        {
                            arrAliases = (ArrayList)this.sqlEmitter.PropertyColumnMap[propPath];
                        }
                        arrAliases.Add(column.Alias);
                    }
                    else
                    {
                        this.sqlEmitter.PropertyColumnMap[propPath] = column.Alias;
                    }
                }
            }
        }
Ejemplo n.º 4
0
 public virtual SqlColumnAlias GetPropertyColumnAlias(SqlTableAlias tableAlias, IPropertyMap propertyMap, string propertyPath, string suggestion)
 {
     return(sqlEmitter.GetColumnAlias(tableAlias, propertyMap.GetColumnMap(), propertyPath, GetAliasSuggestionFromPropertyPath(propertyPath, suggestion)));
 }
Ejemplo n.º 5
0
 public FromTable(SqlTableAlias alias, SqlTableAlias linksToAlias)
 {
     this.alias        = alias;
     this.linksToAlias = linksToAlias;
 }