public virtual void MapTypes(List <Type> allTypes, NHibernate.Cfg.Configuration cfg, Func <string, string> formatter) { var m = new HbmMapping(); m.Items = allTypes.Select(t => { var sc = new HbmSubclass(); sc.name = GetName(t); sc.extends = GetName(t.BaseType); sc.discriminatorvalue = map.GetOrCreateDefinition(t).Discriminator ?? t.Name; sc.lazy = false; sc.lazySpecified = true; var propertyMappings = GetPersistables(t) .Select(p => p.Attribute.GetPropertyMapping(p.DeclaringProperty, formatter)) .ToList(); if (propertyMappings.Count > 0) { if (sc.Items == null) { sc.Items = propertyMappings.ToArray(); } else { sc.Items = sc.Items.Union(propertyMappings).ToArray(); } } return(sc); }).ToArray(); var dbg = m.AsString(); cfg.AddDeserializedMapping(m, "N2"); }
private static string GetFileName(HbmMapping hbmMapping) { string name = "MyMapping"; HbmClass rc = hbmMapping.RootClasses.FirstOrDefault(); if (rc != null) { name = rc.Name; } HbmSubclass sc = hbmMapping.SubClasses.FirstOrDefault(); if (sc != null) { name = sc.Name; } HbmJoinedSubclass jc = hbmMapping.JoinedSubclasses.FirstOrDefault(); if (jc != null) { name = jc.Name; } HbmUnionSubclass uc = hbmMapping.UnionSubclasses.FirstOrDefault(); if (uc != null) { name = uc.Name; } return(name + ".hbm.xml"); }
private void VerifyHinheritedMapping(HbmMapping mapping) { mapping.SubClasses.Should().Have.Count.EqualTo(1); HbmSubclass sc = mapping.SubClasses.Single(); sc.extends.Should().Not.Be.Null().And.Contain("EntitySimple"); sc.Properties.Should().Have.Count.EqualTo(1); sc.Properties.Single().Name.Should().Be.EqualTo("Surname"); }
public void HandleSubclass(PersistentClass model, HbmSubclass subClassMapping, IDictionary <string, MetaAttribute> inheritedMetas) { Subclass subclass = new SingleTableSubclass(model); BindClass(subClassMapping, subclass, inheritedMetas); inheritedMetas = GetMetas(subClassMapping, inheritedMetas, true); // get meta's from <subclass> if (subclass.EntityPersisterClass == null) { subclass.RootClazz.EntityPersisterClass = typeof(SingleTableEntityPersister); } log.InfoFormat("Mapping subclass: {0} -> {1}", subclass.EntityName, subclass.Table.Name); // properties new PropertiesBinder(mappings, subclass, dialect).Bind(subClassMapping.Properties, inheritedMetas); BindJoins(subClassMapping.Joins, subclass, inheritedMetas); BindSubclasses(subClassMapping.Subclasses, subclass, inheritedMetas); model.AddSubclass(subclass); mappings.AddClass(subclass); }
public virtual void MapTypes(List <Type> allTypes, NHibernate.Cfg.Configuration cfg, Func <string, string> formatter) { var m = new HbmMapping(); m.Items = allTypes.Select(t => { var sc = new HbmSubclass(); sc.name = GetName(t); sc.extends = GetName(t.BaseType); sc.discriminatorvalue = map.GetOrCreateDefinition(t).Discriminator ?? t.Name; sc.lazy = false; sc.lazySpecified = true; var propertyMappings = GetPersistables(t) .Select(p => p.Attribute.GetPropertyMapping(p.DeclaringProperty, formatter)) .ToList(); if (propertyMappings.Count > 0) { if (sc.Items == null) { sc.Items = propertyMappings.ToArray(); } else { sc.Items = sc.Items.Union(propertyMappings).ToArray(); } } logger.DebugFormat("Generating subclass {0} with discriminator {1} extending {2} with {3} items ({4} property mappings)", sc.name, sc.discriminatorvalue, sc.extends, sc.Items != null ? sc.Items.Length.ToString() : "(null)", propertyMappings.Count); return(sc); }).ToArray(); if (Debugger.IsAttached) { var dbg = m.AsString(); } cfg.AddDeserializedMapping(m, "N2"); }
private void AddSubclasses(HbmSubclass subClass, IDictionary <string, MetaAttribute> inheritedMetas) { var binder = new SubclassBinder(this, dialect); binder.Bind(subClass, inheritedMetas); }
public void Bind(HbmSubclass subClassMapping, IDictionary <string, MetaAttribute> inheritedMetas) { PersistentClass superModel = GetSuperclass(subClassMapping.extends); HandleSubclass(superModel, subClassMapping, inheritedMetas); }