protected virtual bool PropertyIsPartOfCompositeIdentityRelationship(IPropertyMap propertyMap) { if (propertyMap.ReferenceType != ReferenceType.None) if (propertyMap.GetAdditionalIdColumnMaps().Count > 0) return true; return false; }
protected virtual string GetRemoveCollectionPropertyStatement(object obj, IPropertyMap propertyMap, IList parameters) { IClassMap classMap; IColumnMap idColumnMap; IPropertyMap idPropertyMap; ITableMap tableMap; string paramName = ""; IObjectManager om = m_SqlEngineManager.Context.ObjectManager; classMap = propertyMap.ClassMap; tableMap = propertyMap.MustGetTableMap(); SqlDeleteStatement delete = new SqlDeleteStatement(tableMap.SourceMap) ; SqlTableAlias table = delete.GetSqlTableAlias(tableMap); delete.SqlFromClause.AddSqlAliasTableSource(table); idColumnMap = propertyMap.GetIdColumnMap(); SqlColumnAlias idColumn = table.GetSqlColumnAlias(idColumnMap); idPropertyMap = classMap.MustGetPropertyMapForColumnMap(idColumnMap.MustGetPrimaryKeyColumnMap()); paramName = GetParameterName(idPropertyMap, "Id_"); SqlParameter param = AddSqlParameter(delete, parameters, paramName, obj, idPropertyMap, om.GetPropertyValue(obj, idPropertyMap.Name), idColumnMap); SqlSearchCondition search = delete.SqlWhereClause.GetNextSqlSearchCondition(); search.GetSqlComparePredicate(idColumn, SqlCompareOperatorType.Equals, param); foreach (IColumnMap iIdColumnMap in propertyMap.GetAdditionalIdColumnMaps()) { idColumnMap = iIdColumnMap; idColumn = table.GetSqlColumnAlias(idColumnMap); paramName = GetParameterName(propertyMap, idColumnMap, "Id_"); if (!(classMap.GetTypeColumnMap() == null && classMap.GetTypeColumnMap() == idColumnMap.MustGetPrimaryKeyColumnMap())) { param = AddSqlParameter(delete, parameters, paramName, obj, null, classMap.TypeValue, idColumnMap, true); } else { idPropertyMap = classMap.MustGetPropertyMapForColumnMap(idColumnMap.MustGetPrimaryKeyColumnMap()); param = AddSqlParameter(delete, parameters, paramName, obj, idPropertyMap, om.GetPropertyValue(obj, idPropertyMap.Name), idColumnMap); } search = delete.SqlWhereClause.GetNextSqlSearchCondition(); search.GetSqlComparePredicate(idColumn, SqlCompareOperatorType.Equals, param); } return GenerateSql(delete); }
protected virtual string GetSelectManyManyPropertyStatement(object obj, IPropertyMap propertyMap, IList idColumns, IList typeColumns, Hashtable hashPropertyColumnMap, IList parameters) { IColumnMap columnMap; IClassMap classMap; IPropertyMap refPropertyMap; ITableMap tableMap; ITableMap joinTableMap; string colName; IObjectManager om; IColumnMap idColumnMap; IPropertyMap myPropertyMap; IColumnMap myColumnMap; ITableMap myTableMap; IColumnMap colColumnMap; IColumnMap forColumnMap; ITableMap forTableMap; IColumnMap addColumnMap; IColumnMap addIdColumnMap; IColumnMap addMyColumnMap; ITableMap addMyTableMap; IColumnMap typeColumnMap; IPropertyMap orderByMap; string paramName = ""; classMap = propertyMap.MustGetReferencedClassMap(); tableMap = classMap.MustGetTableMap(); SqlSelectStatement select = new SqlSelectStatement(tableMap.SourceMap) ; SqlTableAlias table = select.GetSqlTableAlias(tableMap); joinTableMap = propertyMap.MustGetTableMap(); SqlTableAlias joinTable = select.GetSqlTableAlias(joinTableMap); idColumnMap = propertyMap.GetIdColumnMap(); SqlColumnAlias idColumn = joinTable.GetSqlColumnAlias(idColumnMap); myTableMap = idColumnMap.MustGetPrimaryKeyTableMap(); myColumnMap = idColumnMap.MustGetPrimaryKeyColumnMap(); if (myTableMap == null) throw new MappingException("TableMap '" + idColumnMap.PrimaryKeyTable + "' Not Found!"); // do not localize if (myColumnMap == null) throw new MappingException("ColumnMap '" + idColumnMap.PrimaryKeyColumn + "' Not Found!"); // do not localize SqlTableAlias myTable; colColumnMap = propertyMap.GetColumnMap(); forTableMap = colColumnMap.MustGetPrimaryKeyTableMap(); forColumnMap = colColumnMap.MustGetPrimaryKeyColumnMap(); if (forTableMap == null) throw new MappingException("TableMap '" + idColumnMap.PrimaryKeyTable + "' Not Found!"); // do not localize if (forColumnMap == null) throw new MappingException("ColumnMap '" + idColumnMap.PrimaryKeyColumn + "' Not Found!"); // do not localize SqlTableAlias forTable = select.GetSqlTableAlias(forTableMap); SqlColumnAlias forColumn = forTable.GetSqlColumnAlias(forColumnMap); SqlColumnAlias colColumn = joinTable.GetSqlColumnAlias(colColumnMap); orderByMap = propertyMap.GetOrderByPropertyMap(); foreach (IPropertyMap iRefPropertyMap in classMap.GetPrimaryPropertyMaps()) { refPropertyMap = iRefPropertyMap; if (!((refPropertyMap.IsCollection || (refPropertyMap.ReferenceType != ReferenceType.None && !(refPropertyMap.IsIdentity))))) { IColumnMap refColumnMap = refPropertyMap.GetColumnMap(); SqlColumnAlias refColumn = select.GetSqlColumnAlias(refColumnMap); colName = refColumnMap.Name; if (refPropertyMap.IsIdentity) idColumns.Add(colName); if (!(refPropertyMap.LazyLoad)) { select.SqlSelectClause.AddSqlAliasSelectListItem(refColumn); hashPropertyColumnMap[refPropertyMap.Name] = colName; if (refPropertyMap == orderByMap) select.SqlOrderByClause.AddSqlOrderByItem(refColumn); } } } typeColumnMap = classMap.GetTypeColumnMap(); if (typeColumnMap != null) { typeColumns.Add(typeColumnMap.Name); SqlColumnAlias typeColumn = select.GetSqlColumnAlias(typeColumnMap); select.SqlSelectClause.AddSqlAliasSelectListItem(typeColumn); } select.SqlFromClause.AddSqlAliasTableSource(table); select.SqlFromClause.AddSqlAliasTableSource(joinTable); //if (tableMap.SourceMap.Schema.ToLower(CultureInfo.InvariantCulture) == myTableMap.SourceMap.Schema.ToLower(CultureInfo.InvariantCulture) && tableMap.Name.ToLower(CultureInfo.InvariantCulture) == myTableMap.Name.ToLower(CultureInfo.InvariantCulture)) if (tableMap == myTableMap) myTable = select.GetSqlTableAlias(myTableMap, "NPersistSelfRefTable"); else myTable = select.GetSqlTableAlias(myTableMap); SqlColumnAlias myColumn = myTable.GetSqlColumnAlias(myColumnMap); select.SqlFromClause.AddSqlAliasTableSource(myTable); SqlSearchCondition search = select.SqlWhereClause.GetNextSqlSearchCondition(); search.GetSqlComparePredicate(forColumn, SqlCompareOperatorType.Equals, colColumn); foreach (IColumnMap iAddColumnMap in propertyMap.GetAdditionalColumnMaps()) { addColumnMap = iAddColumnMap; addMyColumnMap = addColumnMap.MustGetPrimaryKeyColumnMap(); if (addMyColumnMap == null) throw new MappingException("ColumnMap '" + addColumnMap.PrimaryKeyColumn + "' Not Found!"); // do not localize SqlColumnAlias addColumn = forTable.GetSqlColumnAlias(addColumnMap); SqlColumnAlias addMyColumn = joinTable.GetSqlColumnAlias(addMyColumnMap); search = select.SqlWhereClause.GetNextSqlSearchCondition(); search.GetSqlComparePredicate(addColumn, SqlCompareOperatorType.Equals, addMyColumn); } search = select.SqlWhereClause.GetNextSqlSearchCondition(); search.GetSqlComparePredicate(idColumn, SqlCompareOperatorType.Equals, myColumn); foreach (IColumnMap iAddIdColumnMap in propertyMap.GetAdditionalIdColumnMaps()) { addIdColumnMap = iAddIdColumnMap; addMyTableMap = addIdColumnMap.MustGetPrimaryKeyTableMap(); addMyColumnMap = addIdColumnMap.MustGetPrimaryKeyColumnMap(); if (addMyTableMap == null) throw new MappingException("TableMap '" + addIdColumnMap.PrimaryKeyTable + "' Not Found!"); // do not localize if (addMyColumnMap == null) throw new MappingException("ColumnMap '" + addIdColumnMap.PrimaryKeyColumn + "' Not Found!"); // do not localize SqlColumnAlias addIdColumn = joinTable.GetSqlColumnAlias(addIdColumnMap); SqlColumnAlias addMyColumn = myTable.GetSqlColumnAlias(addMyColumnMap); search = select.SqlWhereClause.GetNextSqlSearchCondition(); search.GetSqlComparePredicate(addIdColumn, SqlCompareOperatorType.Equals, addMyColumn); } om = m_SqlEngineManager.Context.ObjectManager; foreach (IPropertyMap iMyPropertyMap in propertyMap.ClassMap.GetIdentityPropertyMaps()) { myPropertyMap = iMyPropertyMap; columnMap = myPropertyMap.GetColumnMap(); SqlColumnAlias column = myTable.GetSqlColumnAlias(columnMap); SqlParameter param; paramName = GetParameterName(myPropertyMap, "Id_"); if (om.GetPropertyStatus(obj, propertyMap.Name) == PropertyStatus.Dirty) param = AddSqlParameter(select, parameters, paramName, obj, myPropertyMap, om.GetOriginalPropertyValue(obj, myPropertyMap.Name), columnMap, true); else param = AddSqlParameter(select, parameters, paramName, obj, myPropertyMap, om.GetPropertyValue(obj, myPropertyMap.Name), columnMap); search = select.SqlWhereClause.GetNextSqlSearchCondition(); search.GetSqlComparePredicate(column, SqlCompareOperatorType.Equals, param); } typeColumnMap = propertyMap.ClassMap.GetTypeColumnMap(); if (typeColumnMap != null) { SqlColumnAlias typeColumn = myTable.GetSqlColumnAlias(typeColumnMap); paramName = GetParameterName(propertyMap.ClassMap, "Type_"); SqlParameter param = AddSqlParameter(select, parameters, paramName, obj, null, propertyMap.ClassMap.TypeValue, typeColumnMap, true); search = select.SqlWhereClause.GetNextSqlSearchCondition(); search.GetSqlComparePredicate(typeColumn, SqlCompareOperatorType.Equals, param); } return GenerateSql(select); }
protected virtual string GetInsertCollectionValueStatement(object obj, IPropertyMap propertyMap, object value, IList parameters) { IClassMap classMap; IColumnMap columnMap; IColumnMap idColumnMap; IPropertyMap idPropertyMap; ITableMap tableMap; IObjectManager om = m_SqlEngineManager.Context.ObjectManager; string paramName; classMap = propertyMap.ClassMap; tableMap = propertyMap.MustGetTableMap(); SqlInsertStatement insert = new SqlInsertStatement(tableMap.SourceMap); SqlTableAlias table = insert.GetSqlTableAlias(tableMap); insert.SqlInsertClause.SqlTable = table.SqlTable; idColumnMap = propertyMap.GetIdColumnMap(); idPropertyMap = classMap.MustGetPropertyMapForColumnMap(idColumnMap.MustGetPrimaryKeyColumnMap()); SqlColumnAlias idColumn = table.GetSqlColumnAlias(idColumnMap); paramName = GetParameterName(idPropertyMap); SqlParameter param = AddSqlParameter(insert, parameters, paramName, obj, idPropertyMap, om.GetPropertyValue(obj, idPropertyMap.Name), idColumnMap); insert.AddSqlColumnAndValue(idColumn, param); foreach (IColumnMap iIdColumnMap in propertyMap.GetAdditionalIdColumnMaps()) { idColumnMap = iIdColumnMap; idColumn = table.GetSqlColumnAlias(idColumnMap); paramName = GetParameterName(propertyMap, idColumnMap); if (!(classMap.GetTypeColumnMap() == null && classMap.GetTypeColumnMap() == idColumnMap.MustGetPrimaryKeyColumnMap())) param = AddSqlParameter(insert, parameters, paramName, obj, null, classMap.TypeValue, idColumnMap, true); else { idPropertyMap = classMap.MustGetPropertyMapForColumnMap(idColumnMap.MustGetPrimaryKeyColumnMap()); param = AddSqlParameter(insert, parameters, paramName, obj, idPropertyMap, om.GetPropertyValue(obj, idPropertyMap.Name), idColumnMap); } insert.AddSqlColumnAndValue(idColumn, param); } columnMap = propertyMap.GetColumnMap(); SqlColumnAlias column = table.GetSqlColumnAlias(columnMap); paramName = GetParameterName(propertyMap, columnMap); param = AddSqlParameter(insert, parameters, paramName, obj, propertyMap, value, columnMap, true); insert.AddSqlColumnAndValue(column, param); foreach (IColumnMap iColumnMap in propertyMap.GetAdditionalColumnMaps()) { columnMap = iColumnMap; column = table.GetSqlColumnAlias(columnMap); paramName = GetParameterName(propertyMap, columnMap); param = AddSqlParameter(insert, parameters, paramName, obj, propertyMap, value, columnMap, true); insert.AddSqlColumnAndValue(column, param); } return GenerateSql(insert); }
protected virtual string GetSelectNonPrimaryPropertyStatement(object obj, IPropertyMap propertyMap, ArrayList propertyNames, IList parameters) { IClassMap classMap; IColumnMap columnMap; IColumnMap idColumnMap; IPropertyMap idPropertyMap; IPropertyMap addPropertyMap; ITableMap tableMap; string paramName = ""; IContext ctx = m_SqlEngineManager.Context; IObjectManager om = ctx.ObjectManager; classMap = m_SqlEngineManager.Context.DomainMap.MustGetClassMap(obj.GetType()); tableMap = propertyMap.MustGetTableMap(); SqlSelectStatement select = new SqlSelectStatement(tableMap.SourceMap) ; SqlTableAlias table = select.GetSqlTableAlias(tableMap); columnMap = propertyMap.GetColumnMap(); SqlColumnAlias column = table.GetSqlColumnAlias(columnMap); select.SqlSelectClause.AddSqlAliasSelectListItem(column); propertyNames.Add(propertyMap.Name); foreach (IPropertyMap iAddPropertyMap in classMap.GetAllPropertyMaps()) { addPropertyMap = iAddPropertyMap; if (addPropertyMap.MustGetTableMap() == tableMap) { if (!(addPropertyMap == propertyMap)) { if (om.GetPropertyStatus(obj, addPropertyMap.Name) == PropertyStatus.NotLoaded) { if (!((addPropertyMap.IsCollection || (addPropertyMap.ReferenceType != ReferenceType.None && !(addPropertyMap.IsIdentity))))) { if (!(addPropertyMap.LazyLoad)) { columnMap = addPropertyMap.GetColumnMap(); column = table.GetSqlColumnAlias(columnMap); select.SqlSelectClause.AddSqlAliasSelectListItem(column); propertyNames.Add(addPropertyMap.Name); } } } } } } select.SqlFromClause.AddSqlAliasTableSource(table); if (!(propertyMap.MustGetTableMap() == classMap.MustGetTableMap())) { idColumnMap = propertyMap.GetIdColumnMap(); idPropertyMap = classMap.MustGetPropertyMapForColumnMap(idColumnMap.MustGetPrimaryKeyColumnMap()); SqlColumnAlias idColumn = table.GetSqlColumnAlias(idColumnMap); paramName = GetParameterName(propertyMap, "Id_"); SqlParameter param = AddSqlParameter(select, parameters, paramName, obj, idPropertyMap, om.GetPropertyValue(obj, idPropertyMap.Name), idColumnMap, true); SqlSearchCondition search = select.SqlWhereClause.GetNextSqlSearchCondition(); search.GetSqlComparePredicate(idColumn, SqlCompareOperatorType.Equals, param); foreach (IColumnMap iIdColumnMap in propertyMap.GetAdditionalIdColumnMaps()) { idColumnMap = iIdColumnMap; idColumn = table.GetSqlColumnAlias(idColumnMap); paramName = GetParameterName(propertyMap, idColumnMap, "Id_"); if (!(classMap.GetTypeColumnMap() == null && classMap.GetTypeColumnMap() == idColumnMap.MustGetPrimaryKeyColumnMap())) param = AddSqlParameter(select, parameters, paramName, obj, null, classMap.TypeValue, idColumnMap, true); else { idPropertyMap = classMap.MustGetPropertyMapForColumnMap(idColumnMap.MustGetPrimaryKeyColumnMap()); param = AddSqlParameter(select, parameters, paramName, obj, idPropertyMap, om.GetPropertyValue(obj, idPropertyMap.Name), idColumnMap, true); } search = select.SqlWhereClause.GetNextSqlSearchCondition(); search.GetSqlComparePredicate(idColumn, SqlCompareOperatorType.Equals, param); } } else { foreach (IPropertyMap iPropertyMap in classMap.GetIdentityPropertyMaps()) { propertyMap = iPropertyMap; columnMap = propertyMap.GetColumnMap(); SqlColumnAlias idColumn = table.GetSqlColumnAlias(columnMap); paramName = GetParameterName(propertyMap, "Id_"); SqlParameter param; if (om.GetPropertyStatus(obj, propertyMap.Name) == PropertyStatus.Dirty) param = AddSqlParameter(select, parameters, paramName, obj, propertyMap, om.GetOriginalPropertyValue(obj, propertyMap.Name), columnMap, true); else param = AddSqlParameter(select, parameters, paramName, obj, propertyMap, om.GetPropertyValue(obj, propertyMap.Name), columnMap); SqlSearchCondition search = select.SqlWhereClause.GetNextSqlSearchCondition(); search.GetSqlComparePredicate(idColumn, SqlCompareOperatorType.Equals, param); } } return GenerateSql(select); }
protected virtual string GetSelectManyOnePropertyStatement(object obj, IPropertyMap propertyMap, IList idColumns, IList typeColumns, Hashtable hashPropertyColumnMap, IList parameters) { string colName = ""; IColumnMap columnMap; IClassMap classMap; IPropertyMap refPropertyMap; ITableMap tableMap; ITableMap rootTableMap; IColumnMap idColumnMap; IPropertyMap myPropertyMap; IColumnMap myColumnMap; ITableMap myTableMap; IColumnMap addIdColumnMap; IColumnMap addMyColumnMap; ITableMap addMyTableMap; IColumnMap typeColumnMap; IPropertyMap orderByMap; string paramName = ""; classMap = propertyMap.MustGetReferencedClassMap(); IClassMap rootClassMap = classMap; rootTableMap = classMap.MustGetTableMap(); tableMap = propertyMap.MustGetTableMap(); if (tableMap != rootTableMap) { bool done = false; while (done == false && rootClassMap.InheritanceType != InheritanceType.ConcreteTableInheritance) { done = true; IClassMap super = rootClassMap.GetInheritedClassMap(); if (super != null) { if (super.MustGetTableMap() == rootTableMap) { rootClassMap = super ; done = false; } } } if (rootClassMap == null) { rootClassMap = classMap; } } SqlSelectStatement select = new SqlSelectStatement(tableMap.SourceMap) ; SqlTableAlias table = select.GetSqlTableAlias(tableMap); idColumnMap = propertyMap.GetIdColumnMap(); SqlColumnAlias idColumn = table.GetSqlColumnAlias(idColumnMap); myTableMap = idColumnMap.MustGetPrimaryKeyTableMap(); myColumnMap = idColumnMap.MustGetPrimaryKeyColumnMap(); if (myTableMap == null) throw new MappingException("TableMap '" + idColumnMap.PrimaryKeyTable + "' Not Found!"); // do not localize if (myColumnMap == null) throw new MappingException("ColumnMap '" + idColumnMap.PrimaryKeyColumn + "' Not Found!"); // do not localize SqlTableAlias rootTable = table; if (tableMap != rootTableMap) { rootTable = select.GetSqlTableAlias(rootTableMap, "NPersistRootTable"); } SqlTableAlias myTable; SqlColumnAlias myColumn; IObjectManager om; orderByMap = propertyMap.GetOrderByPropertyMap(); //foreach (IPropertyMap iRefPropertyMap in rootClassMap.GetPrimaryPropertyMaps()) foreach (IPropertyMap iRefPropertyMap in rootClassMap.GetAllPropertyMaps()) { refPropertyMap = iRefPropertyMap; if (refPropertyMap.IsCollection) { if (this.Context.PersistenceManager.GetListCountLoadBehavior(LoadBehavior.Default, refPropertyMap) == LoadBehavior.Eager) { if (refPropertyMap.ReferenceType != ReferenceType.None) { ITableMap listTableMap = refPropertyMap.GetTableMap(); ISourceMap listSourceMap = listTableMap.SourceMap; SqlSelectStatement subSelect = new SqlSelectStatement(listSourceMap); SqlTableAlias listTable = subSelect.GetSqlTableAlias(listTableMap, "t" + select.GetNextTableAliasIndex()); SqlCountFunction count = new SqlCountFunction(); subSelect.SqlSelectClause.AddSqlAliasSelectListItem(count); subSelect.SqlFromClause.AddSqlAliasTableSource(listTable); foreach (IColumnMap fkIdColumnMap in refPropertyMap.GetAllIdColumnMaps()) { IColumnMap pkIdColumnMap = fkIdColumnMap.MustGetPrimaryKeyColumnMap(); SqlColumnAlias fkIdColumn = listTable.GetSqlColumnAlias(fkIdColumnMap); SqlColumnAlias pkIdColumn = table.GetSqlColumnAlias(pkIdColumnMap); SqlSearchCondition searchCount = subSelect.SqlWhereClause.GetNextSqlSearchCondition(); searchCount.GetSqlComparePredicate(fkIdColumn, SqlCompareOperatorType.Equals, pkIdColumn); } select.SqlSelectClause.AddSqlAliasSelectListItem(subSelect, refPropertyMap.Name); hashPropertyColumnMap[refPropertyMap.Name] = refPropertyMap.Name; } } } else { if (refPropertyMap.MustGetTableMap() == rootTableMap) { if (!((refPropertyMap.IsCollection || ((refPropertyMap.ReferenceType != ReferenceType.None && refPropertyMap.GetAdditionalColumnMaps().Count > 0) && !(refPropertyMap.IsIdentity))))) { IColumnMap refColumnMap = refPropertyMap.GetColumnMap(); //SqlColumnAlias refColumn = table.GetSqlColumnAlias(refColumnMap); SqlColumnAlias refColumn = rootTable.GetSqlColumnAlias(refColumnMap); colName = refColumnMap.Name; if (refPropertyMap.IsIdentity) idColumns.Add(colName); if (!(refPropertyMap.LazyLoad)) { select.SqlSelectClause.AddSqlAliasSelectListItem(refColumn); hashPropertyColumnMap[refPropertyMap.Name] = colName; if (refPropertyMap == orderByMap) select.SqlOrderByClause.AddSqlOrderByItem(refColumn); } } } } } select.SqlFromClause.AddSqlAliasTableSource(table); typeColumnMap = classMap.GetTypeColumnMap(); if (typeColumnMap != null) { SqlColumnAlias typeColumn = rootTable.GetSqlColumnAlias(typeColumnMap); select.SqlSelectClause.AddSqlAliasSelectListItem(typeColumn); typeColumns.Add(typeColumnMap.Name); } if (table != rootTable) { select.SqlFromClause.AddSqlAliasTableSource(rootTable); } //if (tableMap.SourceMap.Schema.ToLower(CultureInfo.InvariantCulture) == myTableMap.SourceMap.Schema.ToLower(CultureInfo.InvariantCulture) && tableMap.Name.ToLower(CultureInfo.InvariantCulture) == myTableMap.Name.ToLower(CultureInfo.InvariantCulture)) if (myTableMap == tableMap) myTable = select.GetSqlTableAlias(myTableMap, "NPersistSelfRefTable"); else myTable = select.GetSqlTableAlias(myTableMap, "NPersistOwnerTable"); myColumn = myTable.GetSqlColumnAlias(myColumnMap); select.SqlFromClause.AddSqlAliasTableSource(myTable); SqlSearchCondition search = select.SqlWhereClause.GetNextSqlSearchCondition(); search.GetSqlComparePredicate(idColumn, SqlCompareOperatorType.Equals, myColumn); foreach (IColumnMap iAddIdColumnMap in propertyMap.GetAdditionalIdColumnMaps()) { addIdColumnMap = iAddIdColumnMap; addMyTableMap = addIdColumnMap.GetPrimaryKeyTableMap(); addMyColumnMap = addIdColumnMap.MustGetPrimaryKeyColumnMap(); if (addMyTableMap == null) throw new MappingException("TableMap '" + addIdColumnMap.PrimaryKeyTable + "' Not Found!"); // do not localize if (addMyColumnMap == null) throw new MappingException("ColumnMap '" + addIdColumnMap.PrimaryKeyColumn + "' Not Found!"); // do not localize SqlColumnAlias addIdColumn = table.GetSqlColumnAlias(addIdColumnMap); SqlColumnAlias addMyColumn = myTable.GetSqlColumnAlias(addMyColumnMap); search = select.SqlWhereClause.GetNextSqlSearchCondition(); search.GetSqlComparePredicate(addIdColumn, SqlCompareOperatorType.Equals, addMyColumn); } if (table != rootTable) { foreach (IPropertyMap testPropertyMap in classMap.GetAllPropertyMaps()) { if (testPropertyMap.MustGetTableMap() == propertyMap.MustGetTableMap()) { foreach (IColumnMap iAddIdColumnMap in testPropertyMap.GetAllIdColumnMaps()) { addIdColumnMap = iAddIdColumnMap; SqlColumnAlias addIdColumn = table.GetSqlColumnAlias(addIdColumnMap); SqlColumnAlias rootColumn = rootTable.GetSqlColumnAlias(addIdColumnMap.MustGetPrimaryKeyColumnMap()); search = select.SqlWhereClause.GetNextSqlSearchCondition(); search.GetSqlComparePredicate(addIdColumn, SqlCompareOperatorType.Equals, rootColumn); } break; } } } om = m_SqlEngineManager.Context.ObjectManager; foreach (IPropertyMap iMyPropertyMap in propertyMap.ClassMap.GetIdentityPropertyMaps()) { myPropertyMap = iMyPropertyMap; columnMap = myPropertyMap.GetColumnMap(); SqlColumnAlias column = myTable.GetSqlColumnAlias(columnMap); SqlParameter param; paramName = GetParameterName(myPropertyMap, "Id_"); if (om.GetPropertyStatus(obj, propertyMap.Name) == PropertyStatus.Dirty) param = AddSqlParameter(select, parameters, paramName, obj, myPropertyMap, om.GetOriginalPropertyValue(obj, myPropertyMap.Name), columnMap, true); else param = AddSqlParameter(select, parameters, paramName, obj, myPropertyMap, om.GetPropertyValue(obj, myPropertyMap.Name), columnMap); search = select.SqlWhereClause.GetNextSqlSearchCondition(); search.GetSqlComparePredicate(column, SqlCompareOperatorType.Equals, param); } typeColumnMap = propertyMap.ClassMap.GetTypeColumnMap(); if (typeColumnMap != null) { IClassMap actual = this.Context.DomainMap.MustGetClassMap(obj.GetType()); SqlColumnAlias typeColumn = myTable.GetSqlColumnAlias(typeColumnMap); paramName = GetParameterName(propertyMap.ClassMap, "Type_"); //SqlParameter param = AddSqlParameter(select, parameters, paramName, obj, null, propertyMap.ClassMap.TypeValue, typeColumnMap, true); SqlParameter param = AddSqlParameter(select, parameters, paramName, obj, null, actual.TypeValue, typeColumnMap, true); search = select.SqlWhereClause.GetNextSqlSearchCondition(); search.GetSqlComparePredicate(typeColumn, SqlCompareOperatorType.Equals, param); } return GenerateSql(select); }