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; } } } }
public virtual void Visited(SqlTableAlias tableAlias) { }
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; } } } }
public virtual SqlColumnAlias GetPropertyColumnAlias(SqlTableAlias tableAlias, IPropertyMap propertyMap, string propertyPath, string suggestion) { return(sqlEmitter.GetColumnAlias(tableAlias, propertyMap.GetColumnMap(), propertyPath, GetAliasSuggestionFromPropertyPath(propertyPath, suggestion))); }
public FromTable(SqlTableAlias alias, SqlTableAlias linksToAlias) { this.alias = alias; this.linksToAlias = linksToAlias; }