public virtual void GenerateTablesForClasses(IDomainMap sourceDomainMap, IDomainMap targetDomainMap, bool generateMappings, bool onlyForComputed) { IList propertyMaps = new ArrayList(); IList allPropertyMaps; bool ok = false; IList classMaps = sourceDomainMap.GetPersistentClassMaps(); foreach (IClassMap classMap in classMaps) { if (!(classMap.SourceClass.Length > 0)) { ISourceMap sourceMap = classMap.GetSourceMap(); if (onlyForComputed && sourceMap != null && sourceMap.Compute) { if (!((classMap.IsAbstract & (classMap.InheritanceType == InheritanceType.None || (classMap.InheritanceType == InheritanceType.ConcreteTableInheritance & !(classMap.GetInheritedClassMap() == null)))))) { if (classMap.GetTableMap() == null) { CreateTableForClass(classMap, targetDomainMap, generateMappings); } if (classMap.TypeColumn.Length > 0 || classMap.InheritanceType != InheritanceType.None) { if (classMap.GetTypeColumnMap() == null) { CreateTypeColumnForClass(classMap, targetDomainMap, generateMappings); } } } } } } foreach (IClassMap classMap in classMaps) { if (!(classMap.SourceClass.Length > 0)) { ISourceMap sourceMap = classMap.GetSourceMap(); if (onlyForComputed && sourceMap != null && sourceMap.Compute) { if (!((classMap.IsAbstract & (classMap.InheritanceType == InheritanceType.None || (classMap.InheritanceType == InheritanceType.ConcreteTableInheritance & !(classMap.GetInheritedClassMap() == null)))))) { if (classMap.InheritanceType == InheritanceType.None) { propertyMaps = classMap.GetAllPropertyMaps(); } else if (classMap.InheritanceType == InheritanceType.SingleTableInheritance || classMap.InheritanceType == InheritanceType.ClassTableInheritance) { propertyMaps = classMap.GetNonInheritedPropertyMaps(); } else if (classMap.InheritanceType == InheritanceType.ConcreteTableInheritance) { if (classMap.GetInheritedClassMap() == null) { propertyMaps = classMap.GetAllPropertyMaps(); } else { allPropertyMaps = classMap.GetAllPropertyMaps(); propertyMaps = new ArrayList(); foreach (IPropertyMap addPropertyMap in allPropertyMaps) { if (!(addPropertyMap.IsIdentity)) { propertyMaps.Add(addPropertyMap); } } } } foreach (IPropertyMap propertyMap in propertyMaps) { ISourceMap propSourceMap = propertyMap.GetSourceMap(); if (onlyForComputed && propSourceMap != null && propSourceMap.Compute) { if (!(propertyMap.InheritInverseMappings)) { if (propertyMap.Table.Length > 0 || propertyMap.IsCollection || IsOutbrokenByInheritance(propertyMap, classMap)) { ok = true; if (propertyMap.IsCollection) { if (propertyMap.ReferenceType == ReferenceType.ManyToOne) { ok = false; } } if (ok) { if (propertyMap.GetTableMap() == null) { CreateTableForProperty(propertyMap, targetDomainMap, generateMappings); } } } } } } } } } } foreach (IClassMap classMap in classMaps) { if (!(classMap.SourceClass.Length > 0)) { ISourceMap sourceMap = classMap.GetSourceMap(); if (onlyForComputed && sourceMap != null && sourceMap.Compute) { if (!((classMap.IsAbstract & (classMap.InheritanceType == InheritanceType.None || (classMap.InheritanceType == InheritanceType.ConcreteTableInheritance & !(classMap.GetInheritedClassMap() == null)))))) { if (classMap.InheritanceType == InheritanceType.None) { propertyMaps = classMap.GetAllPropertyMaps(); } else if (classMap.InheritanceType == InheritanceType.SingleTableInheritance || classMap.InheritanceType == InheritanceType.ClassTableInheritance) { propertyMaps = classMap.GetNonInheritedPropertyMaps(); } else if (classMap.InheritanceType == InheritanceType.ConcreteTableInheritance) { if (classMap.GetInheritedClassMap() == null) { propertyMaps = classMap.GetAllPropertyMaps(); } else { allPropertyMaps = classMap.GetAllPropertyMaps(); propertyMaps = new ArrayList(); foreach (IPropertyMap addPropertyMap in allPropertyMaps) { if (!(addPropertyMap.IsIdentity)) { propertyMaps.Add(addPropertyMap); } } } } foreach (IPropertyMap propertyMap in propertyMaps) { ISourceMap propSourceMap = propertyMap.GetSourceMap(); if (onlyForComputed && propSourceMap != null && propSourceMap.Compute) { if (!(propertyMap.InheritInverseMappings)) { ok = true; if (propertyMap.IsCollection) { if (propertyMap.ReferenceType == ReferenceType.ManyToOne) { ok = false; } } if (ok) { if (propertyMap.IdColumn.Length > 0 || propertyMap.IsCollection || propertyMap.Table.Length > 0 || IsOutbrokenByInheritance(propertyMap, classMap)) { if (propertyMap.GetIdColumnMap() == null) { CreateIDColumnForProperty(propertyMap, targetDomainMap, generateMappings, classMap); } } if (propertyMap.GetColumnMap() == null) { CreateColumnForProperty(propertyMap, targetDomainMap, generateMappings, classMap); } } } } } } } } } }