public void HandleUnionSubclass(PersistentClass model, HbmUnionSubclass unionSubclassMapping, IDictionary<string, MetaAttribute> inheritedMetas) { var unionSubclass = new UnionSubclass(model); BindClass(unionSubclassMapping, unionSubclass, inheritedMetas); inheritedMetas = GetMetas(unionSubclassMapping, inheritedMetas, true); // get meta's from <union-subclass> // union subclass if (unionSubclass.EntityPersisterClass == null) unionSubclass.RootClazz.EntityPersisterClass = typeof(UnionSubclassEntityPersister); //table + schema names string schema = unionSubclassMapping.schema ?? mappings.SchemaName; string catalog = unionSubclassMapping.catalog ?? mappings.CatalogName; Table denormalizedSuperTable = unionSubclass.Superclass.Table; Table mytable = mappings.AddDenormalizedTable(schema, catalog, GetClassTableName(unionSubclass, unionSubclassMapping.table), unionSubclass.IsAbstract.GetValueOrDefault(), null, denormalizedSuperTable); ((ITableOwner)unionSubclass).Table = mytable; log.InfoFormat("Mapping union-subclass: {0} -> {1}", unionSubclass.EntityName, unionSubclass.Table.Name); // properties new PropertiesBinder(mappings, unionSubclass, dialect).Bind(unionSubclassMapping.Properties, inheritedMetas); BindUnionSubclasses(unionSubclassMapping.UnionSubclasses, unionSubclass, inheritedMetas); model.AddSubclass(unionSubclass); mappings.AddClass(unionSubclass); }
private void AddUnionSubclasses(HbmUnionSubclass unionSubclass, IDictionary<string, MetaAttribute> inheritedMetas) { var binder = new UnionSubclassBinder(Mappings, dialect); binder.Bind(unionSubclass, inheritedMetas); }
public UnionSubclassMapper(Type subClass, HbmMapping mapDoc) : base(subClass, mapDoc) { classMapping = new HbmUnionSubclass(); var toAdd = new[] { classMapping }; classMapping.name = subClass.GetShortClassName(mapDoc); classMapping.extends = subClass.BaseType.GetShortClassName(mapDoc); mapDoc.Items = mapDoc.Items == null ? toAdd : mapDoc.Items.Concat(toAdd).ToArray(); }
public void Bind(HbmUnionSubclass unionSubclassMapping, IDictionary<string, MetaAttribute> inheritedMetas) { PersistentClass superModel = GetSuperclass(unionSubclassMapping.extends); HandleUnionSubclass(superModel, unionSubclassMapping, inheritedMetas); }