From: <fab...@us...> - 2011-04-13 18:03:20
|
Revision: 5690 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5690&view=rev Author: fabiomaulo Date: 2011-04-13 18:03:13 +0000 (Wed, 13 Apr 2011) Log Message: ----------- Minor refactoring Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/JoinCustomizer.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/NaturalIdCustomizer.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/PropertyContainerCustomizer.cs Modified: trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/JoinCustomizer.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/JoinCustomizer.cs 2011-04-13 17:44:36 UTC (rev 5689) +++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/JoinCustomizer.cs 2011-04-13 18:03:13 UTC (rev 5690) @@ -82,94 +82,73 @@ CustomizersHolder.AddCustomizer(typeof(TEntity), (IJoinAttributesMapper m) => m.Fetch(fetchMode)); } - public override void Set<TElement>(Expression<Func<TEntity, IEnumerable<TElement>>> property, Action<ISetPropertiesMapper<TEntity, TElement>> collectionMapping, Action<ICollectionElementRelation<TElement>> mapping) + protected override void RegisterSetMapping<TElement>(Expression<Func<TEntity, IEnumerable<TElement>>> property, Action<ISetPropertiesMapper<TEntity, TElement>> collectionMapping, Action<ICollectionElementRelation<TElement>> mapping) { MemberInfo member = TypeExtensions.DecodeMemberAccessExpression(property); ExplicitDeclarationsHolder.AddAsPropertySplit(new SplitDefinition(typeof (TEntity), splitGroupId, member)); - base.Set(property, collectionMapping, mapping); + base.RegisterSetMapping(property, collectionMapping, mapping); } - public override void Bag<TElement>(Expression<Func<TEntity, IEnumerable<TElement>>> property, Action<IBagPropertiesMapper<TEntity, TElement>> collectionMapping, Action<ICollectionElementRelation<TElement>> mapping) + protected override void RegisterBagMapping<TElement>(Expression<Func<TEntity, IEnumerable<TElement>>> property, Action<IBagPropertiesMapper<TEntity, TElement>> collectionMapping, Action<ICollectionElementRelation<TElement>> mapping) { MemberInfo member = TypeExtensions.DecodeMemberAccessExpression(property); ExplicitDeclarationsHolder.AddAsPropertySplit(new SplitDefinition(typeof(TEntity), splitGroupId, member)); - base.Bag(property, collectionMapping, mapping); + base.RegisterBagMapping(property, collectionMapping, mapping); } - public override void List<TElement>(Expression<Func<TEntity, IEnumerable<TElement>>> property, Action<IListPropertiesMapper<TEntity, TElement>> collectionMapping, Action<ICollectionElementRelation<TElement>> mapping) + protected override void RegisterListMapping<TElement>(Expression<Func<TEntity, IEnumerable<TElement>>> property, Action<IListPropertiesMapper<TEntity, TElement>> collectionMapping, Action<ICollectionElementRelation<TElement>> mapping) { MemberInfo member = TypeExtensions.DecodeMemberAccessExpression(property); ExplicitDeclarationsHolder.AddAsPropertySplit(new SplitDefinition(typeof(TEntity), splitGroupId, member)); - base.List(property, collectionMapping, mapping); + base.RegisterListMapping(property, collectionMapping, mapping); } - public override void Map<TKey, TElement>(Expression<Func<TEntity, IDictionary<TKey, TElement>>> property, Action<IMapPropertiesMapper<TEntity, TKey, TElement>> collectionMapping, Action<IMapKeyRelation<TKey>> keyMapping, Action<ICollectionElementRelation<TElement>> mapping) + protected override void RegisterMapMapping<TKey, TElement>(Expression<Func<TEntity, IDictionary<TKey, TElement>>> property, Action<IMapPropertiesMapper<TEntity, TKey, TElement>> collectionMapping, Action<IMapKeyRelation<TKey>> keyMapping, Action<ICollectionElementRelation<TElement>> mapping) { MemberInfo member = TypeExtensions.DecodeMemberAccessExpression(property); ExplicitDeclarationsHolder.AddAsPropertySplit(new SplitDefinition(typeof(TEntity), splitGroupId, member)); - base.Map(property, collectionMapping, keyMapping, mapping); + base.RegisterMapMapping(property, collectionMapping, keyMapping, mapping); } - public override void Map<TKey, TElement>(Expression<Func<TEntity, IDictionary<TKey, TElement>>> property, Action<IMapPropertiesMapper<TEntity, TKey, TElement>> collectionMapping, Action<ICollectionElementRelation<TElement>> mapping) + protected override void RegisterPropertyMapping<TProperty>(Expression<Func<TEntity, TProperty>> property, Action<IPropertyMapper> mapping) { MemberInfo member = TypeExtensions.DecodeMemberAccessExpression(property); ExplicitDeclarationsHolder.AddAsPropertySplit(new SplitDefinition(typeof(TEntity), splitGroupId, member)); - base.Map(property, collectionMapping, mapping); + base.RegisterPropertyMapping(property, mapping); } - public override void Property<TProperty>(Expression<Func<TEntity, TProperty>> property) + protected override void RegisterFieldMapping(FieldInfo member, Action<IPropertyMapper> mapping) { - MemberInfo member = TypeExtensions.DecodeMemberAccessExpression(property); ExplicitDeclarationsHolder.AddAsPropertySplit(new SplitDefinition(typeof(TEntity), splitGroupId, member)); - base.Property(property); + base.RegisterFieldMapping(member, mapping); } - public override void Property<TProperty>(Expression<Func<TEntity, TProperty>> property, Action<IPropertyMapper> mapping) + protected override void RegisterComponentMapping<TComponent>(Expression<Func<TEntity, TComponent>> property, Action<IComponentMapper<TComponent>> mapping) { MemberInfo member = TypeExtensions.DecodeMemberAccessExpression(property); ExplicitDeclarationsHolder.AddAsPropertySplit(new SplitDefinition(typeof(TEntity), splitGroupId, member)); - base.Property(property, mapping); + base.RegisterComponentMapping(property, mapping); } - public override void Property(FieldInfo member, Action<IPropertyMapper> mapping) + protected override void RegisterManyToOneMapping<TProperty>(Expression<Func<TEntity, TProperty>> property, Action<IManyToOneMapper> mapping) { - ExplicitDeclarationsHolder.AddAsPropertySplit(new SplitDefinition(typeof(TEntity), splitGroupId, member)); - base.Property(member, mapping); - } - - public override void Component<TComponent>(Expression<Func<TEntity, TComponent>> property, Action<IComponentMapper<TComponent>> mapping) - { MemberInfo member = TypeExtensions.DecodeMemberAccessExpression(property); ExplicitDeclarationsHolder.AddAsPropertySplit(new SplitDefinition(typeof(TEntity), splitGroupId, member)); - base.Component(property, mapping); + base.RegisterManyToOneMapping(property, mapping); } - public override void ManyToOne<TProperty>(Expression<Func<TEntity, TProperty>> property, Action<IManyToOneMapper> mapping) + protected override void RegisterAnyMapping<TProperty>(Expression<Func<TEntity, TProperty>> property, System.Type idTypeOfMetaType, Action<IAnyMapper> mapping) { MemberInfo member = TypeExtensions.DecodeMemberAccessExpression(property); ExplicitDeclarationsHolder.AddAsPropertySplit(new SplitDefinition(typeof(TEntity), splitGroupId, member)); - base.ManyToOne(property, mapping); + base.RegisterAnyMapping(property, idTypeOfMetaType, mapping); } - public override void ManyToOne<TProperty>(Expression<Func<TEntity, TProperty>> property) + protected override void RegisterIdBagMapping<TElement>(Expression<Func<TEntity, IEnumerable<TElement>>> property, Action<IIdBagPropertiesMapper<TEntity, TElement>> collectionMapping, Action<ICollectionElementRelation<TElement>> mapping) { MemberInfo member = TypeExtensions.DecodeMemberAccessExpression(property); ExplicitDeclarationsHolder.AddAsPropertySplit(new SplitDefinition(typeof(TEntity), splitGroupId, member)); - base.ManyToOne(property); + base.RegisterIdBagMapping(property, collectionMapping, mapping); } - - public override void Any<TProperty>(Expression<Func<TEntity, TProperty>> property, System.Type idTypeOfMetaType, Action<IAnyMapper> mapping) - { - MemberInfo member = TypeExtensions.DecodeMemberAccessExpression(property); - ExplicitDeclarationsHolder.AddAsPropertySplit(new SplitDefinition(typeof(TEntity), splitGroupId, member)); - base.Any(property, idTypeOfMetaType, mapping); - } - - public override void IdBag<TElement>(Expression<Func<TEntity, IEnumerable<TElement>>> property, Action<IIdBagPropertiesMapper<TEntity, TElement>> collectionMapping, Action<ICollectionElementRelation<TElement>> mapping) - { - MemberInfo member = TypeExtensions.DecodeMemberAccessExpression(property); - ExplicitDeclarationsHolder.AddAsPropertySplit(new SplitDefinition(typeof(TEntity), splitGroupId, member)); - base.IdBag(property, collectionMapping, mapping); - } } } \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/NaturalIdCustomizer.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/NaturalIdCustomizer.cs 2011-04-13 17:44:36 UTC (rev 5689) +++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/NaturalIdCustomizer.cs 2011-04-13 18:03:13 UTC (rev 5690) @@ -7,55 +7,46 @@ public NaturalIdCustomizer(IModelExplicitDeclarationsHolder explicitDeclarationsHolder, ICustomizersHolder customizersHolder) : base(explicitDeclarationsHolder, customizersHolder, null) {} - public override void Property<TProperty>(System.Linq.Expressions.Expression<System.Func<TEntity, TProperty>> property, System.Action<IPropertyMapper> mapping) + protected override void RegisterPropertyMapping<TProperty>(System.Linq.Expressions.Expression<System.Func<TEntity, TProperty>> property, System.Action<IPropertyMapper> mapping) { MemberInfo member = TypeExtensions.DecodeMemberAccessExpression(property); MemberInfo memberOf = TypeExtensions.DecodeMemberAccessExpressionOf(property); ExplicitDeclarationsHolder.AddAsNaturalId(member); ExplicitDeclarationsHolder.AddAsNaturalId(memberOf); - base.Property(property, mapping); + base.RegisterPropertyMapping(property, mapping); } - public override void Property(FieldInfo member, System.Action<IPropertyMapper> mapping) + protected override void RegisterFieldMapping(FieldInfo member, System.Action<IPropertyMapper> mapping) { ExplicitDeclarationsHolder.AddAsNaturalId(member); - base.Property(member, mapping); + base.RegisterFieldMapping(member, mapping); } - public override void Component<TComponent>(System.Linq.Expressions.Expression<System.Func<TEntity, TComponent>> property, System.Action<IComponentMapper<TComponent>> mapping) + protected override void RegisterComponentMapping<TComponent>(System.Linq.Expressions.Expression<System.Func<TEntity, TComponent>> property, System.Action<IComponentMapper<TComponent>> mapping) { MemberInfo member = TypeExtensions.DecodeMemberAccessExpression(property); MemberInfo memberOf = TypeExtensions.DecodeMemberAccessExpressionOf(property); ExplicitDeclarationsHolder.AddAsNaturalId(member); ExplicitDeclarationsHolder.AddAsNaturalId(memberOf); - base.Component(property, mapping); + base.RegisterComponentMapping(property, mapping); } - public override void Any<TProperty>(System.Linq.Expressions.Expression<System.Func<TEntity, TProperty>> property, System.Type idTypeOfMetaType, System.Action<IAnyMapper> mapping) + protected override void RegisterAnyMapping<TProperty>(System.Linq.Expressions.Expression<System.Func<TEntity, TProperty>> property, System.Type idTypeOfMetaType, System.Action<IAnyMapper> mapping) { MemberInfo member = TypeExtensions.DecodeMemberAccessExpression(property); MemberInfo memberOf = TypeExtensions.DecodeMemberAccessExpressionOf(property); ExplicitDeclarationsHolder.AddAsNaturalId(member); ExplicitDeclarationsHolder.AddAsNaturalId(memberOf); - base.Any(property, idTypeOfMetaType, mapping); + base.RegisterAnyMapping(property, idTypeOfMetaType, mapping); } - public override void ManyToOne<TProperty>(System.Linq.Expressions.Expression<System.Func<TEntity, TProperty>> property) + protected override void RegisterManyToOneMapping<TProperty>(System.Linq.Expressions.Expression<System.Func<TEntity, TProperty>> property, System.Action<IManyToOneMapper> mapping) { MemberInfo member = TypeExtensions.DecodeMemberAccessExpression(property); MemberInfo memberOf = TypeExtensions.DecodeMemberAccessExpressionOf(property); ExplicitDeclarationsHolder.AddAsNaturalId(member); ExplicitDeclarationsHolder.AddAsNaturalId(memberOf); - base.ManyToOne(property); + base.RegisterManyToOneMapping(property, mapping); } - - public override void ManyToOne<TProperty>(System.Linq.Expressions.Expression<System.Func<TEntity, TProperty>> property, System.Action<IManyToOneMapper> mapping) - { - MemberInfo member = TypeExtensions.DecodeMemberAccessExpression(property); - MemberInfo memberOf = TypeExtensions.DecodeMemberAccessExpressionOf(property); - ExplicitDeclarationsHolder.AddAsNaturalId(member); - ExplicitDeclarationsHolder.AddAsNaturalId(memberOf); - base.ManyToOne(property, mapping); - } } } \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/PropertyContainerCustomizer.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/PropertyContainerCustomizer.cs 2011-04-13 17:44:36 UTC (rev 5689) +++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/PropertyContainerCustomizer.cs 2011-04-13 18:03:13 UTC (rev 5690) @@ -28,13 +28,18 @@ get { return explicitDeclarationsHolder; } } - public virtual void Property<TProperty>(Expression<Func<TEntity, TProperty>> property) + public void Property<TProperty>(Expression<Func<TEntity, TProperty>> property) { Property(property, x => { }); } - public virtual void Property<TProperty>(Expression<Func<TEntity, TProperty>> property, Action<IPropertyMapper> mapping) + public void Property<TProperty>(Expression<Func<TEntity, TProperty>> property, Action<IPropertyMapper> mapping) { + RegisterPropertyMapping(property, mapping); + } + + protected virtual void RegisterPropertyMapping<TProperty>(Expression<Func<TEntity, TProperty>> property, Action<IPropertyMapper> mapping) + { MemberInfo member = TypeExtensions.DecodeMemberAccessExpression(property); MemberInfo memberOf = TypeExtensions.DecodeMemberAccessExpressionOf(property); CustomizersHolder.AddCustomizer(new PropertyPath(PropertyPath, member), mapping); @@ -43,24 +48,41 @@ explicitDeclarationsHolder.AddAsProperty(memberOf); } - public virtual void Property(FieldInfo member, Action<IPropertyMapper> mapping) + public void Property(FieldInfo member, Action<IPropertyMapper> mapping) { + RegisterFieldMapping(member, mapping); + } + + protected virtual void RegisterFieldMapping(FieldInfo member, Action<IPropertyMapper> mapping) + { CustomizersHolder.AddCustomizer(new PropertyPath(PropertyPath, member), mapping); explicitDeclarationsHolder.AddAsProperty(member); } - public virtual void Component<TComponent>(Expression<Func<TEntity, TComponent>> property, + public void Component<TComponent>(Expression<Func<TEntity, TComponent>> property, Action<IComponentMapper<TComponent>> mapping) where TComponent : class { + RegisterComponentMapping(property, mapping); + } + + protected virtual void RegisterComponentMapping<TComponent>(Expression<Func<TEntity, TComponent>> property, Action<IComponentMapper<TComponent>> mapping) + where TComponent : class + { MemberInfo member = TypeExtensions.DecodeMemberAccessExpression(property); mapping(new ComponentCustomizer<TComponent>(explicitDeclarationsHolder, CustomizersHolder, new PropertyPath(PropertyPath, member))); MemberInfo memberOf = TypeExtensions.DecodeMemberAccessExpressionOf(property); mapping(new ComponentCustomizer<TComponent>(explicitDeclarationsHolder, CustomizersHolder, new PropertyPath(PropertyPath, memberOf))); } - public virtual void ManyToOne<TProperty>(Expression<Func<TEntity, TProperty>> property, Action<IManyToOneMapper> mapping) + public void ManyToOne<TProperty>(Expression<Func<TEntity, TProperty>> property, Action<IManyToOneMapper> mapping) where TProperty : class { + RegisterManyToOneMapping(property, mapping); + } + + protected virtual void RegisterManyToOneMapping<TProperty>(Expression<Func<TEntity, TProperty>> property, Action<IManyToOneMapper> mapping) + where TProperty : class + { MemberInfo member = TypeExtensions.DecodeMemberAccessExpression(property); CustomizersHolder.AddCustomizer(new PropertyPath(PropertyPath, member), mapping); MemberInfo memberOf = TypeExtensions.DecodeMemberAccessExpressionOf(property); @@ -69,7 +91,7 @@ explicitDeclarationsHolder.AddAsManyToOneRelation(memberOf); } - public virtual void ManyToOne<TProperty>(Expression<Func<TEntity, TProperty>> property) where TProperty : class + public void ManyToOne<TProperty>(Expression<Func<TEntity, TProperty>> property) where TProperty : class { ManyToOne(property, x => { }); } @@ -85,9 +107,15 @@ explicitDeclarationsHolder.AddAsOneToOneRelation(memberOf); } - public virtual void Any<TProperty>(Expression<Func<TEntity, TProperty>> property, System.Type idTypeOfMetaType, Action<IAnyMapper> mapping) + public void Any<TProperty>(Expression<Func<TEntity, TProperty>> property, System.Type idTypeOfMetaType, Action<IAnyMapper> mapping) where TProperty : class { + RegisterAnyMapping(property, idTypeOfMetaType, mapping); + } + + protected virtual void RegisterAnyMapping<TProperty>(Expression<Func<TEntity, TProperty>> property, System.Type idTypeOfMetaType, Action<IAnyMapper> mapping) + where TProperty : class + { MemberInfo member = TypeExtensions.DecodeMemberAccessExpression(property); CustomizersHolder.AddCustomizer(new PropertyPath(PropertyPath, member), am => am.IdType(idTypeOfMetaType)); CustomizersHolder.AddCustomizer(new PropertyPath(PropertyPath, member), mapping); @@ -98,10 +126,15 @@ explicitDeclarationsHolder.AddAsAny(memberOf); } - public virtual void Set<TElement>(Expression<Func<TEntity, IEnumerable<TElement>>> property, + public void Set<TElement>(Expression<Func<TEntity, IEnumerable<TElement>>> property, Action<ISetPropertiesMapper<TEntity, TElement>> collectionMapping, Action<ICollectionElementRelation<TElement>> mapping) { + RegisterSetMapping(property, collectionMapping, mapping); + } + + protected virtual void RegisterSetMapping<TElement>(Expression<Func<TEntity, IEnumerable<TElement>>> property, Action<ISetPropertiesMapper<TEntity, TElement>> collectionMapping, Action<ICollectionElementRelation<TElement>> mapping) + { MemberInfo member = TypeExtensions.DecodeMemberAccessExpression(property); collectionMapping(new SetPropertiesCustomizer<TEntity, TElement>(explicitDeclarationsHolder, new PropertyPath(null, member), CustomizersHolder)); mapping(new CollectionElementRelationCustomizer<TElement>(explicitDeclarationsHolder, new PropertyPath(PropertyPath, member), CustomizersHolder)); @@ -111,10 +144,15 @@ mapping(new CollectionElementRelationCustomizer<TElement>(explicitDeclarationsHolder, new PropertyPath(PropertyPath, member), CustomizersHolder)); } - public virtual void Bag<TElement>(Expression<Func<TEntity, IEnumerable<TElement>>> property, + public void Bag<TElement>(Expression<Func<TEntity, IEnumerable<TElement>>> property, Action<IBagPropertiesMapper<TEntity, TElement>> collectionMapping, Action<ICollectionElementRelation<TElement>> mapping) { + RegisterBagMapping(property, collectionMapping, mapping); + } + + protected virtual void RegisterBagMapping<TElement>(Expression<Func<TEntity, IEnumerable<TElement>>> property, Action<IBagPropertiesMapper<TEntity, TElement>> collectionMapping, Action<ICollectionElementRelation<TElement>> mapping) + { MemberInfo member = TypeExtensions.DecodeMemberAccessExpression(property); collectionMapping(new BagPropertiesCustomizer<TEntity, TElement>(explicitDeclarationsHolder, new PropertyPath(null, member), CustomizersHolder)); mapping(new CollectionElementRelationCustomizer<TElement>(explicitDeclarationsHolder, new PropertyPath(PropertyPath, member), CustomizersHolder)); @@ -124,10 +162,15 @@ mapping(new CollectionElementRelationCustomizer<TElement>(explicitDeclarationsHolder, new PropertyPath(PropertyPath, memberOf), CustomizersHolder)); } - public virtual void List<TElement>(Expression<Func<TEntity, IEnumerable<TElement>>> property, + public void List<TElement>(Expression<Func<TEntity, IEnumerable<TElement>>> property, Action<IListPropertiesMapper<TEntity, TElement>> collectionMapping, Action<ICollectionElementRelation<TElement>> mapping) { + RegisterListMapping(property, collectionMapping, mapping); + } + + protected virtual void RegisterListMapping<TElement>(Expression<Func<TEntity, IEnumerable<TElement>>> property, Action<IListPropertiesMapper<TEntity, TElement>> collectionMapping, Action<ICollectionElementRelation<TElement>> mapping) + { MemberInfo member = TypeExtensions.DecodeMemberAccessExpression(property); collectionMapping(new ListPropertiesCustomizer<TEntity, TElement>(explicitDeclarationsHolder, new PropertyPath(null, member), CustomizersHolder)); mapping(new CollectionElementRelationCustomizer<TElement>(explicitDeclarationsHolder, new PropertyPath(PropertyPath, member), CustomizersHolder)); @@ -137,11 +180,16 @@ mapping(new CollectionElementRelationCustomizer<TElement>(explicitDeclarationsHolder, new PropertyPath(PropertyPath, member), CustomizersHolder)); } - public virtual void Map<TKey, TElement>(Expression<Func<TEntity, IDictionary<TKey, TElement>>> property, + public void Map<TKey, TElement>(Expression<Func<TEntity, IDictionary<TKey, TElement>>> property, Action<IMapPropertiesMapper<TEntity, TKey, TElement>> collectionMapping, Action<IMapKeyRelation<TKey>> keyMapping, Action<ICollectionElementRelation<TElement>> mapping) { + RegisterMapMapping(property, collectionMapping, keyMapping, mapping); + } + + protected virtual void RegisterMapMapping<TKey, TElement>(Expression<Func<TEntity, IDictionary<TKey, TElement>>> property, Action<IMapPropertiesMapper<TEntity, TKey, TElement>> collectionMapping, Action<IMapKeyRelation<TKey>> keyMapping, Action<ICollectionElementRelation<TElement>> mapping) + { MemberInfo member = TypeExtensions.DecodeMemberAccessExpression(property); var memberPath = new PropertyPath(PropertyPath, member); collectionMapping(new MapPropertiesCustomizer<TEntity, TKey, TElement>(explicitDeclarationsHolder, memberPath, CustomizersHolder)); @@ -155,17 +203,22 @@ mapping(new CollectionElementRelationCustomizer<TElement>(explicitDeclarationsHolder, memberOfPath, CustomizersHolder)); } - public virtual void Map<TKey, TElement>(Expression<Func<TEntity, IDictionary<TKey, TElement>>> property, + public void Map<TKey, TElement>(Expression<Func<TEntity, IDictionary<TKey, TElement>>> property, Action<IMapPropertiesMapper<TEntity, TKey, TElement>> collectionMapping, Action<ICollectionElementRelation<TElement>> mapping) { Map(property, collectionMapping, keyMapping => { }, mapping); } - public virtual void IdBag<TElement>(Expression<Func<TEntity, IEnumerable<TElement>>> property, + public void IdBag<TElement>(Expression<Func<TEntity, IEnumerable<TElement>>> property, Action<IIdBagPropertiesMapper<TEntity, TElement>> collectionMapping, Action<ICollectionElementRelation<TElement>> mapping) { + RegisterIdBagMapping(property, collectionMapping, mapping); + } + + protected virtual void RegisterIdBagMapping<TElement>(Expression<Func<TEntity, IEnumerable<TElement>>> property, Action<IIdBagPropertiesMapper<TEntity, TElement>> collectionMapping, Action<ICollectionElementRelation<TElement>> mapping) + { MemberInfo member = TypeExtensions.DecodeMemberAccessExpression(property); collectionMapping(new IdBagPropertiesCustomizer<TEntity, TElement>(explicitDeclarationsHolder, new PropertyPath(null, member), CustomizersHolder)); mapping(new CollectionElementRelationCustomizer<TElement>(explicitDeclarationsHolder, new PropertyPath(PropertyPath, member), CustomizersHolder)); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |