示例#1
0
 public ComponentNestedElementMapper(Type componentType, HbmMapping mapDoc, HbmNestedCompositeElement component, MemberInfo declaringComponentMember)
 {
     this.componentType     = componentType;
     this.mapDoc            = mapDoc;
     this.component         = component;
     accessorPropertyMapper = new AccessorPropertyMapper(declaringComponentMember.DeclaringType, declaringComponentMember.Name, x => component.access = x);
 }
        public void CanSetComponentAccessor()
        {
            var mapdoc    = new HbmMapping();
            var component = new HbmNestedCompositeElement();
            var mapper    = new ComponentNestedElementMapper(typeof(Number), mapdoc, component, ForClass <Address> .Property(a => a.Number));

            mapper.Access(Accessor.Field);
            component.access.Should().Contain("field");
        }
        public void Component(MemberInfo property, Action <IComponentElementMapper> mapping)
        {
            System.Type nestedComponentType = property.GetPropertyOrFieldType();
            var         hbm = new HbmNestedCompositeElement {
                name = property.Name, @class = nestedComponentType.GetShortClassName(_mapDoc)
            };

            mapping(new ComponentNestedElementMapper(nestedComponentType, _mapDoc, hbm, property));
            AddProperty(hbm);
        }
        public void CallPropertyMapper()
        {
            var mapdoc    = new HbmMapping();
            var component = new HbmNestedCompositeElement();
            var mapper    = new ComponentNestedElementMapper(typeof(Number), mapdoc, component, ForClass <Address> .Property(a => a.Number));
            var called    = false;

            mapper.Property(ForClass <Number> .Property(a => a.Block), x => called = true);
            called.Should().Be.True();
        }
        public void CanMapParent()
        {
            var mapdoc    = new HbmMapping();
            var component = new HbmNestedCompositeElement();
            var mapper    = new ComponentNestedElementMapper(typeof(Number), mapdoc, component, ForClass <Address> .Property(a => a.Number));

            mapper.Parent(typeof(Address).GetProperty("Parent"));
            component.Parent.Should().Not.Be.Null();
            component.Parent.name.Should().Be.EqualTo("Parent");
        }
示例#6
0
        public void Component <TNestedComponent>(Expression <Func <TComponent, TNestedComponent> > property,
                                                 Action <IComponentElementMapper <TNestedComponent> > mapping)
            where TNestedComponent : class
        {
            var hbm = new HbmNestedCompositeElement {
                name = TypeUtils.DecodeMemberAccessExpression(property).Name
            };

            mapping(new ComponentNestedElementMapper <TNestedComponent>(mapDoc, hbm));
            AddProperty(hbm);
        }
        public void CanMapManyToOne()
        {
            var mapdoc    = new HbmMapping();
            var component = new HbmNestedCompositeElement();
            var mapper    = new ComponentNestedElementMapper(typeof(Number), mapdoc, component, ForClass <Address> .Property(a => a.Number));

            mapper.ManyToOne(ForClass <Number> .Property(a => a.Parent), x => { });
            component.Properties.Should().Have.Count.EqualTo(1);
            component.Properties.First().Name.Should().Be.EqualTo("Parent");
            component.Properties.First().Should().Be.OfType <HbmManyToOne>();
        }
        public void CanMapProperty()
        {
            var mapdoc    = new HbmMapping();
            var component = new HbmNestedCompositeElement();
            var mapper    = new ComponentNestedElementMapper(typeof(Number), mapdoc, component, ForClass <Address> .Property(a => a.Number));

            mapper.Property(ForClass <Number> .Property(a => a.Block), x => { });
            mapper.Property(ForClass <Number> .Property(a => a.Dir), x => { });

            component.Properties.Should().Have.Count.EqualTo(2);
            component.Properties.Select(cp => cp.Name).Should().Have.SameValuesAs("Block", "Dir");
        }
示例#9
0
 public ComponentNestedElementMapper(HbmMapping mapDoc, HbmNestedCompositeElement component)
 {
     this.mapDoc    = mapDoc;
     this.component = component;
 }