Ejemplo n.º 1
0
        private void BindCompositeElement(HbmCompositeElement compositeElementMapping, Mapping.Collection model, IDictionary <string, MetaAttribute> inheritedMetas)
        {
            var component = new Component(model);

            model.Element = component;
            BindComponent(compositeElementMapping, component, null, null, model.Role + ".element", true, inheritedMetas);
        }
Ejemplo n.º 2
0
        public void Component(Action <IComponentElementMapper <TElement> > componentMapping)
        {
            var hbm = new HbmCompositeElement {
                @class = TypeUtils.GetClassName(mapping, typeof(TElement))
            };

            componentMapping(new ComponentElementMapper <TElement>(mapping, hbm));
            elementRelationshipAssing(hbm);
        }
Ejemplo n.º 3
0
        public void Component(Action <IComponentElementMapper> mapping)
        {
            var hbm = new HbmCompositeElement {
                @class = collectionElementType.GetShortClassName(mapDoc)
            };

            mapping(new ComponentElementMapper(collectionElementType, mapDoc, hbm));
            elementRelationshipAssing(hbm);
        }
Ejemplo n.º 4
0
        public void CallPropertyMapper()
        {
            var mapdoc    = new HbmMapping();
            var component = new HbmCompositeElement();
            var mapper    = new ComponentElementMapper(typeof(Address), mapdoc, component);
            var called    = false;

            mapper.Property(typeof(Address).GetProperty("Street"), x => called = true);
            called.Should().Be.True();
        }
Ejemplo n.º 5
0
        public void CanMapProperty()
        {
            var mapdoc    = new HbmMapping();
            var component = new HbmCompositeElement();
            var mapper    = new ComponentElementMapper(typeof(Address), mapdoc, component);

            mapper.Property(typeof(Address).GetProperty("Street"), x => { });
            component.Properties.Should().Have.Count.EqualTo(1);
            component.Properties.First().Name.Should().Be.EqualTo("Street");
        }
Ejemplo n.º 6
0
        public void CanMapParent()
        {
            var mapdoc    = new HbmMapping();
            var component = new HbmCompositeElement();
            var mapper    = new ComponentElementMapper(typeof(Address), mapdoc, component);

            mapper.Parent(typeof(Address).GetProperty("Parent"));
            component.Parent.Should().Not.Be.Null();
            component.Parent.name.Should().Be.EqualTo("Parent");
        }
Ejemplo n.º 7
0
        public void BagIsPropertyOfComponent()
        {
            var mapper = new ModelMapper();

            mapper.Class <OwnerWithIntermediate>(classMapper =>
            {
                classMapper.Id(p => p.Id);
                classMapper.Component(
                    p => p.Intermediate,
                    componentMapper =>
                    componentMapper.Bag <OwnedItem>
                    (
                        intermediate => intermediate.Children,
                        bagPropertyMapper =>
                {
                    bagPropertyMapper.Table("Child");
                    bagPropertyMapper.Key(k => k.Column("Parent_Id"));
                },
                        r => r.Component(child =>
                                         child.Property
                                         (
                                             c => c.NameOnClient,
                                             pm =>
                {
                    pm.Column("NameInDatabase");
                }
                                         )
                                         )
                    )
                    );
            });

            var mappings = mapper.CompileMappingForAllExplicitlyAddedEntities();

            HbmBag hbmBag = mappings
                            .Items.Cast <HbmClass>()
                            .Single()
                            .Properties.Cast <HbmComponent>()
                            .Single()
                            .Properties.Cast <HbmBag>()
                            .Single();

            Assert.That(hbmBag.Item, Is.InstanceOf <HbmCompositeElement>());
            HbmCompositeElement childElement = (HbmCompositeElement)hbmBag.Item;

            Assert.That(childElement.Properties.Count(), Is.EqualTo(1));
            HbmProperty propertyMapping = childElement.Properties.Cast <HbmProperty>().Single();

            Assert.That(propertyMapping.Name, Is.EqualTo("NameOnClient"));
            Assert.That(propertyMapping.Columns.Count(), Is.EqualTo(1));
            Assert.That(propertyMapping.Columns.Single().name, Is.EqualTo("NameInDatabase"));
        }
 public ComponentElementMapper(System.Type componentType, HbmMapping mapDoc, HbmCompositeElement component)
 {
     this.componentType = componentType;
     this.mapDoc        = mapDoc;
     this.component     = component;
 }
Ejemplo n.º 9
0
        public void PropertyCustomizerDifferentiatesBetweenChildClasses()
        {
            var mapper = new ModelMapper();

            mapper.Class <OwnerChildOne>(classMapper =>
            {
                classMapper.Id(p => p.Id);
                classMapper.Bag <OwnedItem>
                (
                    parent => parent.OwnedItems,
                    bagPropertyMapper =>
                {
                    bagPropertyMapper.Table("ChildOne");
                    bagPropertyMapper.Key(k => k.Column("Parent_Id"));
                },
                    r => r.Component(
                        child =>
                {
                    child.Property
                    (
                        c => c.NameOnClient,
                        pm =>
                    {
                        pm.Column("OwnerChildOne_CustomColumnName");
                    }
                    );
                }
                        )
                );
            });
            mapper.Class <OwnerChildTwo>(classMapper =>
            {
                classMapper.Id(p => p.Id);
                classMapper.Bag <OwnedItem>
                (
                    parent => parent.OwnedItems,
                    bagPropertyMapper =>
                {
                    bagPropertyMapper.Table("ChildTwo");
                    bagPropertyMapper.Key(k => k.Column("Parent_Id"));
                },
                    r => r.Component(
                        child =>
                {
                    child.Property
                    (
                        c => c.NameOnClient,
                        pm =>
                    {
                        pm.Column("OwnerChildTwo_CustomColumnName");
                    }
                    );
                }
                        )
                );
            });

            var mappings = mapper.CompileMappingForAllExplicitlyAddedEntities();


            HbmBag bag1 = mappings
                          .Items.Cast <HbmClass>()
                          .Where(c => c.Name == typeof(OwnerChildOne).FullName)
                          .Single()
                          .Properties.Cast <HbmBag>()
                          .Single();

            HbmCompositeElement childElement1    = (HbmCompositeElement)bag1.Item;
            HbmProperty         propertyMapping1 = childElement1.Properties.Cast <HbmProperty>().Single();

            Assert.That(propertyMapping1.Columns.Single().name, Is.EqualTo("OwnerChildOne_CustomColumnName"));

            HbmBag bag2 = mappings
                          .Items.Cast <HbmClass>()
                          .Where(c => c.Name == typeof(OwnerChildTwo).FullName)
                          .Single()
                          .Properties.Cast <HbmBag>()
                          .Single();

            HbmCompositeElement childElement2    = (HbmCompositeElement)bag2.Item;
            HbmProperty         propertyMapping2 = childElement2.Properties.Cast <HbmProperty>().Single();

            Assert.That(propertyMapping2.Columns.Single().name, Is.EqualTo("OwnerChildTwo_CustomColumnName"));
        }
Ejemplo n.º 10
0
 public ComponentElementMapper(HbmMapping mapDoc, HbmCompositeElement component)
 {
     this.mapDoc    = mapDoc;
     this.component = component;
 }