Exemplo n.º 1
0
        protected override CollectionMemberMapModel VisitCollectionMember(CollectionMemberMapModel model)
        {
            this.ProcessMember(model);

            var memberType = ReflectionUtil.GetMemberValueType(model.Getter);
            var collectionConvention = this.conventions.GetCollectionConvention(memberType);

            if (model.CollectionType == null)
                model.CollectionType = collectionConvention.GetCollectionType(memberType);

            if (model.ElementType == null)
                model.ElementType = collectionConvention.GetElementType(memberType);

            return base.VisitCollectionMember(model);
        }
Exemplo n.º 2
0
        protected override PersistentMemberMapModel VisitPersistentMember(PersistentMemberMapModel model)
        {
            var memberType = ReflectionUtil.GetMemberValueType(model.Getter);
            var collectionConvention = this.conventions.GetCollectionConvention(memberType);
            if (collectionConvention.IsCollection(memberType))
            {
                var newModel = new CollectionMemberMapModel()
                {
                    Key = model.Key,
                    Getter = model.Getter,
                    Setter = model.Setter,
                    PersistNull = model.PersistNull
                };

                return (CollectionMemberMapModel)this.Visit(newModel);
            }
            else if (this.rootClassTypes.Contains(memberType))
            {
                var newModel = new ManyToOneMapModel()
                {
                    Key = model.Key,
                    Getter = model.Getter,
                    Setter = model.Setter,
                    PersistNull = model.PersistNull
                };

                return (ManyToOneMapModel)this.Visit(newModel);
            }
            else
            {
                var newModel = new ConvertibleMemberMapModel()
                {
                    Key = model.Key,
                    Getter = model.Getter,
                    Setter = model.Setter,
                    PersistNull = model.PersistNull
                };

                return (ConvertibleMemberMapModel)this.Visit(newModel);
            }

            return base.VisitPersistentMember(model);
        }