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); }
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); }