public void RegisteringComponentAndEntityThrow() { var mapper = new ObjectRelationalMapper(); mapper.Component<AComponent>(); ActionAssert.Throws(() => mapper.TablePerClass<AComponent>()).Should().Be.InstanceOf<MappingException>(); ActionAssert.Throws(() => mapper.TablePerConcreteClass<AComponent>()).Should().Be.InstanceOf<MappingException>(); ActionAssert.Throws(() => mapper.TablePerClassHierarchy<AComponent>()).Should().Be.InstanceOf<MappingException>(); }
public void RegisteringComponentAndEntityThrow() { var mapper = new ObjectRelationalMapper(); mapper.Component <AComponent>(); Executing.This(() => mapper.TablePerClass <AComponent>()).Should().Throw().And.Exception.Should().Be.InstanceOf <MappingException>(); Executing.This(() => mapper.TablePerConcreteClass <AComponent>()).Should().Throw().And.Exception.Should().Be.InstanceOf <MappingException>(); Executing.This(() => mapper.TablePerClassHierarchy <AComponent>()).Should().Throw().And.Exception.Should().Be.InstanceOf <MappingException>(); }
public void WhenExplicitExcludedThenNotTablePerConcreteClass() { // To prevent inconsistence var orm = new ObjectRelationalMapper(); orm.TablePerConcreteClass <ToExcludeImplEntity>(); orm.Exclude <ToExcludeImplEntity>(); orm.IsTablePerConcreteClass(typeof(ToExcludeImplEntity)).Should().Be.False(); }
public void RegisterTablePerConcreteClass() { var entitiesTypes = new[] { typeof(MyClass1), typeof(MyClass2) }; var orm = new ObjectRelationalMapper(); orm.TablePerConcreteClass(entitiesTypes); orm.IsTablePerConcreteClass(typeof(MyClass1)).Should().Be(true); orm.IsTablePerConcreteClass(typeof(MyClass2)).Should().Be(true); orm.IsTablePerClass(typeof(MyClass1)).Should().Be(false); orm.IsTablePerClassHierarchy(typeof(MyClass2)).Should().Be(false); }
public void IntegrationWithObjectRelationalMapper() { var orm = new ObjectRelationalMapper(); orm.TablePerConcreteClass<AbstractEntity>(); HbmMapping mapping = GetMapping(orm); VerifyEntitySimpleMapping(mapping); HbmClass rc = mapping.RootClasses.Single(); rc.Id.generator.Should("The ORM should assign a default generator").Not.Be.Null(); VerifyHinheritedMapping(mapping); }
public void IntegrationWithObjectRelationalMapper() { var orm = new ObjectRelationalMapper(); orm.TablePerConcreteClass <AbstractEntity>(); HbmMapping mapping = GetMapping(orm); VerifyEntitySimpleMapping(mapping); HbmClass rc = mapping.RootClasses.Single(); rc.Id.generator.Should("The ORM should assign a default generator").Not.Be.Null(); VerifyHinheritedMapping(mapping); }
public HbmMapping GetMapping() { #region Initialize ConfORM var orm = new ObjectRelationalMapper(); IPatternsAppliersHolder patternsAppliers = (new SafePropertyAccessorPack()) .Merge(new OneToOneRelationPack(orm)) .Merge(new BidirectionalManyToManyRelationPack(orm)) .Merge(new BidirectionalOneToManyRelationPack(orm)) .Merge(new DiscriminatorValueAsClassNamePack(orm)) .Merge(new CoolTablesNamingPack(orm)) .Merge(new CoolColumnsNamingPack(orm)) .Merge(new TablePerClassPack()) .Merge(new UseNoLazyForNoProxablePack()) // <== Lazy false when the class is not proxable .Merge(new ConfOrm.Shop.CoolNaming.UnidirectionalOneToManyMultipleCollectionsKeyColumnApplier(orm)) .Merge(new UseCurrencyForDecimalApplier()) .Merge(new DatePropertyByNameApplier()) .Merge(new MsSQL2008DateTimeApplier()); orm.Patterns.PoidStrategies.Add(new HighLowPoidPattern(new { max_lo = 100 })); var mapper = new Mapper(orm, patternsAppliers); var domainEntities = typeof(Entity) .Assembly.GetTypes() .Where(t => (typeof(AbstractEntity <int>).IsAssignableFrom(t) || typeof(AbstractEntity <Guid>).IsAssignableFrom(t)) && !t.IsGenericType) .ToList(); IEnumerable <Type> tablePerClassEntities = typeof(Entity) .Assembly.GetTypes().Where(t => IsRootEntity(t) && !tablePerClassHierarchy.Contains(t) && !tablePerConcreteClass.Contains(t)).ToList(); // Mappings orm.TablePerClass(tablePerClassEntities); orm.TablePerClassHierarchy(tablePerClassHierarchy); orm.TablePerConcreteClass(tablePerConcreteClass); #endregion ConfOrmMapping(orm, mapper); return(mapper.CompileMappingFor(domainEntities)); }
private Mapper GetMapper() { #region Initialize ConfORM //var inflector = new EnglishInflector(); var orm = new ObjectRelationalMapper(); IPatternsAppliersHolder patternsAppliers = (new SafePropertyAccessorPack()) .Merge(new SafePoidPack()) .Merge(new OneToOneRelationPack(orm)) .Merge(new BidirectionalManyToManyRelationPack(orm)) .Merge(new BidirectionalOneToManyRelationPack(orm)) .Merge(new DiscriminatorValueAsClassNamePack(orm)) .Merge(new CoolTablesNamingPack(orm)) //.Merge(new PluralizedTablesPack(orm, inflector)) .Merge(new CoolColumnsNamingPack(orm)) //.UnionWith(new ConfOrm.Shop.InflectorNaming.CollectionOfElementsColumnApplier(orm, inflector)) .Merge(new PolymorphismPack(orm)) .Merge(new TablePerClassPack()) .Merge(new UseNoLazyForNoProxablePack()) // <== Lazy false when the class is not proxable .Merge(new ConfOrm.Shop.CoolNaming.UnidirectionalOneToManyMultipleCollectionsKeyColumnApplier(orm)) .Merge(new UseCurrencyForDecimalApplier()) .Merge(new DatePropertyByNameApplier()) .Merge(new MsSQL2008DateTimeApplier()); orm.Patterns.PoidStrategies.Add(new HighLowPoidPattern(new { max_lo = 100 })); var mapper = new Mapper(orm, patternsAppliers); IEnumerable <Type> tablePerClassEntities = typeof(Entity) .Assembly.GetTypes().Where(t => IsRootEntity(t) && !tablePerClassHierarchy.Contains(t) && !tablePerConcreteClass.Contains(t)).ToList(); // Mappings orm.AddToDomain(typeof(Entity).Assembly.GetTypes()); orm.TablePerClass(tablePerClassEntities); orm.TablePerClassHierarchy(tablePerClassHierarchy); orm.TablePerConcreteClass(tablePerConcreteClass); #endregion ConfOrmMapping(orm, mapper); return(mapper); }
public void CallAfterEventAfterLastCustomizer() { var callSequence = new List <string>(); var orm = new ObjectRelationalMapper(); orm.TablePerConcreteClass <MyClass>(); var patternsAppliersHolder = new EmptyPatternsAppliersHolder(); var mapper = new Mapper(orm, patternsAppliersHolder); mapper.AfterMapUnionSubclass += (di, t, cam) => callSequence.Add("afterevent"); mapper.UnionSubclass <Inherited>(ca => callSequence.Add("c1")); mapper.UnionSubclass <Inherited>(ca => callSequence.Add("c2")); mapper.CompileMappingFor(new[] { typeof(MyClass), typeof(Inherited) }); callSequence.Should().Have.SameSequenceAs("c1", "c2", "afterevent"); }
public void CallBeforeEventBeforeFirstPatternApplier() { var callSequence = new List <string>(); var orm = new ObjectRelationalMapper(); orm.TablePerConcreteClass <MyClass>(); var patternsAppliersHolder = new EmptyPatternsAppliersHolder(); patternsAppliersHolder.UnionSubclass.Add(t => true, (t, cam) => callSequence.Add("pa")); var mapper = new Mapper(orm, patternsAppliersHolder); mapper.BeforeMapUnionSubclass += (di, t, cam) => callSequence.Add("beforeevent"); mapper.CompileMappingFor(new[] { typeof(MyClass), typeof(Inherited) }); callSequence.Should().Have.SameSequenceAs("beforeevent", "pa"); }
public HbmMapping GenerateMappigs() { var orm = new ObjectRelationalMapper(); orm.Patterns.PoidStrategies.Add(new NativePoidPattern()); //// map .NET4 ISet<T> as a NHibernate's set orm.Patterns.Sets.Add(new UseSetWhenGenericCollectionPattern()); var englishInflector = new EnglishInflector(); IPatternsAppliersHolder patternsAppliers = (new SafePropertyAccessorPack()) .Merge(new ClassPluralizedTableApplier(englishInflector)) .Merge(new DiscriminatorValueAsEnumValuePack <ChildA, Types>(orm)) .Merge(new DiscriminatorValueAsEnumValuePack <ChildB, Types>(orm)) .Merge(new CoolPatternsAppliersHolder(orm)); IEnumerable <Type> allPersistEntities = GetDomainEntities(); IEnumerable <Type> roots = allPersistEntities.Where(t => t.IsAbstract && t.InheritedFromBaseEntity()); IEnumerable <Type> hierarchyEntities = allPersistEntities.Where(t => typeof(IHierarchyEntity).IsAssignableFrom(t)); IEnumerable <Type> separateEntities = allPersistEntities.Except(roots).Except(hierarchyEntities); orm.TablePerConcreteClass(separateEntities); var hierarchyRoots = hierarchyEntities.Where(t => t.IsAbstract && t.InheritedFromBaseEntity()); orm.TablePerClassHierarchy(hierarchyRoots); orm.Cascade <ChildA, Container>(CascadeOn.Persist | CascadeOn.Merge); orm.Cascade <Container, ChildA>(CascadeOn.Persist); orm.Cascade <ChildB, Container>(CascadeOn.Persist | CascadeOn.Merge); orm.Cascade <Container, ChildB>(CascadeOn.Persist); var mapper = new Mapper(orm, patternsAppliers); HbmMapping mapping = mapper.CompileMappingFor(allPersistEntities); File.WriteAllText(@"c:\Test\mappings.xml", Serialize(mapping)); // сохраняем маппинги в файл. return(mapping); }
public void WhenExplicitExcludedThenNotTablePerConcreteClass() { // To prevent inconsistence var orm = new ObjectRelationalMapper(); orm.TablePerConcreteClass<ToExcludeImplEntity>(); orm.Exclude<ToExcludeImplEntity>(); orm.IsTablePerConcreteClass(typeof(ToExcludeImplEntity)).Should().Be.False(); }
public HbmMapping GetMapping() { #region Initialize ConfORM var orm = new ObjectRelationalMapper(); IPatternsAppliersHolder patternsAppliers = (new SafePropertyAccessorPack()) .Merge(new OneToOneRelationPack(orm)) .Merge(new BidirectionalManyToManyRelationPack(orm)) .Merge(new BidirectionalOneToManyRelationPack(orm)) .Merge(new DiscriminatorValueAsClassNamePack(orm)) .Merge(new CoolTablesNamingPack(orm)) .Merge(new CoolColumnsNamingPack(orm)) .Merge(new TablePerClassPack()) .Merge(new UseNoLazyForNoProxablePack()) // <== Lazy false when the class is not proxable .Merge(new ConfOrm.Shop.CoolNaming.UnidirectionalOneToManyMultipleCollectionsKeyColumnApplier(orm)) .Merge(new UseCurrencyForDecimalApplier()) .Merge(new DatePropertyByNameApplier()) .Merge(new MsSQL2008DateTimeApplier()); orm.Patterns.PoidStrategies.Add(new HighLowPoidPattern(new {max_lo = 100})); var mapper = new Mapper(orm, patternsAppliers); var domainEntities = typeof (Entity) .Assembly.GetTypes() .Where(t => (typeof (AbstractEntity<int>).IsAssignableFrom(t) || typeof (AbstractEntity<Guid>).IsAssignableFrom(t)) && !t.IsGenericType) .ToList(); IEnumerable<Type> tablePerClassEntities = typeof (Entity) .Assembly.GetTypes().Where(t => IsRootEntity(t) && !tablePerClassHierarchy.Contains(t) && !tablePerConcreteClass.Contains(t)).ToList(); // Mappings orm.TablePerClass(tablePerClassEntities); orm.TablePerClassHierarchy(tablePerClassHierarchy); orm.TablePerConcreteClass(tablePerConcreteClass); #endregion ConfOrmMapping(orm, mapper); return mapper.CompileMappingFor(domainEntities); }
private Mapper GetMapper() { #region Initialize ConfORM var inflector = new SpanishInflector(); var orm = new ObjectRelationalMapper(); IPatternsAppliersHolder patternsAppliers = (new SafePropertyAccessorPack()) .Merge(new SafePoidPack()) .Merge(new OneToOneRelationPack(orm)) .Merge(new BidirectionalManyToManyRelationPack(orm)) .Merge(new BidirectionalOneToManyRelationPack(orm)) .Merge(new DiscriminatorValueAsClassNamePack(orm)) .Merge(new PluralizedTablesPack(orm, inflector)) .Merge(new CoolColumnsNamingPack(orm)) .UnionWith(new ConfOrm.Shop.InflectorNaming.CollectionOfElementsColumnApplier(orm, inflector)) .Merge(new PolymorphismPack(orm)) .Merge(new TablePerClassPack()) .Merge(new UseNoLazyForNoProxablePack()) // <== Lazy false when the class is not proxable .Merge(new UnidirectionalOneToManyMultipleCollectionsKeyColumnApplier(orm)) .Merge(new UseCurrencyForDecimalApplier()); // orm.Patterns.PoidStrategies.Add(new HighLowPoidPattern(new {max_lo = 100})); var mapper = new Mapper(orm, patternsAppliers); IEnumerable<Type> tablePerClassEntities = typeof(Entity).Assembly.GetTypes().Where( t => IsRootEntity(t) && !_tablePerClassHierarchy.Contains(t) && !_tablePerConcreteClass.Contains(t)).ToList(); // Mappings orm.TablePerClass(tablePerClassEntities); orm.TablePerClassHierarchy(_tablePerClassHierarchy); orm.TablePerConcreteClass(_tablePerConcreteClass); #endregion ConfOrmMapping(orm, mapper); return mapper; }