From: <fab...@us...> - 2011-05-23 22:26:03
|
Revision: 5866 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5866&view=rev Author: fabiomaulo Date: 2011-05-23 22:25:56 +0000 (Mon, 23 May 2011) Log Message: ----------- First approximation to fix NH-2728 (many-to-any by code) Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Mapping/ByCode/AbstractExplicitlyDeclaredModel.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/FakeModelExplicitDeclarationsHolder.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/ICollectionElementRelation.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/IModelExplicitDeclarationsHolder.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CollectionElementRelation.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersHolder.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/CollectionElementRelationCustomizer.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/PropertyContainerCustomizer.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/ExplicitDeclarationsHolder.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/ICustomizersHolder.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/ModelExplicitDeclarationsHolderExtensions.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/SimpleModelInspector.cs trunk/nhibernate/src/NHibernate/NHibernate.csproj trunk/nhibernate/src/NHibernate.Test/MappingByCode/ModelExplicitDeclarationsHolderMergeTest.cs Added Paths: ----------- trunk/nhibernate/src/NHibernate/Mapping/ByCode/IManyToAnyMapper.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/ManyToAnyCustomizer.cs Modified: trunk/nhibernate/src/NHibernate/Mapping/ByCode/AbstractExplicitlyDeclaredModel.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Mapping/ByCode/AbstractExplicitlyDeclaredModel.cs 2011-05-23 20:10:41 UTC (rev 5865) +++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/AbstractExplicitlyDeclaredModel.cs 2011-05-23 22:25:56 UTC (rev 5866) @@ -16,6 +16,7 @@ private readonly HashSet<MemberInfo> idBags = new HashSet<MemberInfo>(); private readonly HashSet<MemberInfo> lists = new HashSet<MemberInfo>(); private readonly HashSet<MemberInfo> manyToManyRelations = new HashSet<MemberInfo>(); + private readonly HashSet<MemberInfo> manyToAnyRelations = new HashSet<MemberInfo>(); private readonly HashSet<MemberInfo> manyToOneRelations = new HashSet<MemberInfo>(); private readonly HashSet<MemberInfo> naturalIds = new HashSet<MemberInfo>(); private readonly HashSet<MemberInfo> composedIds = new HashSet<MemberInfo>(); @@ -90,6 +91,11 @@ get { return oneToManyRelations; } } + public IEnumerable<MemberInfo> ManyToAnyRelations + { + get { return manyToAnyRelations; } + } + public IEnumerable<MemberInfo> Any { get { return any; } @@ -338,6 +344,12 @@ oneToManyRelations.Add(member); } + public void AddAsManyToAnyRelation(MemberInfo member) + { + persistentMembers.Add(member); + manyToAnyRelations.Add(member); + } + public void AddAsAny(MemberInfo member) { persistentMembers.Add(member); Modified: trunk/nhibernate/src/NHibernate/Mapping/ByCode/FakeModelExplicitDeclarationsHolder.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Mapping/ByCode/FakeModelExplicitDeclarationsHolder.cs 2011-05-23 20:10:41 UTC (rev 5865) +++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/FakeModelExplicitDeclarationsHolder.cs 2011-05-23 22:25:56 UTC (rev 5866) @@ -1,3 +1,4 @@ +using System; using System.Collections.Generic; using System.Linq; using System.Reflection; @@ -15,6 +16,7 @@ private readonly IEnumerable<MemberInfo> lists = Enumerable.Empty<MemberInfo>(); private readonly IEnumerable<MemberInfo> manyToManyRelations = Enumerable.Empty<MemberInfo>(); private readonly IEnumerable<MemberInfo> manyToOneRelations = Enumerable.Empty<MemberInfo>(); + private readonly IEnumerable<MemberInfo> manyToAnyRelations = Enumerable.Empty<MemberInfo>(); private readonly IEnumerable<MemberInfo> naturalIds = Enumerable.Empty<MemberInfo>(); private readonly IEnumerable<MemberInfo> oneToManyRelations = Enumerable.Empty<MemberInfo>(); private readonly IEnumerable<MemberInfo> oneToOneRelations = Enumerable.Empty<MemberInfo>(); @@ -84,6 +86,11 @@ get { return oneToManyRelations; } } + public IEnumerable<MemberInfo> ManyToAnyRelations + { + get { return manyToAnyRelations; } + } + public IEnumerable<MemberInfo> Any { get { return any; } @@ -191,6 +198,7 @@ public void AddAsManyToManyRelation(MemberInfo member) {} public void AddAsOneToManyRelation(MemberInfo member) {} + public void AddAsManyToAnyRelation(MemberInfo member) {} public void AddAsAny(MemberInfo member) {} Modified: trunk/nhibernate/src/NHibernate/Mapping/ByCode/ICollectionElementRelation.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Mapping/ByCode/ICollectionElementRelation.cs 2011-05-23 20:10:41 UTC (rev 5865) +++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/ICollectionElementRelation.cs 2011-05-23 22:25:56 UTC (rev 5866) @@ -8,6 +8,7 @@ void OneToMany(Action<IOneToManyMapper> mapping); void ManyToMany(Action<IManyToManyMapper> mapping); void Component(Action<IComponentElementMapper> mapping); + void ManyToAny(System.Type idTypeOfMetaType, Action<IManyToAnyMapper> mapping); } public interface ICollectionElementRelation<TElement> @@ -19,5 +20,7 @@ void ManyToMany(); void ManyToMany(Action<IManyToManyMapper> mapping); void Component(Action<IComponentElementMapper<TElement>> mapping); + void ManyToAny(System.Type idTypeOfMetaType, Action<IManyToAnyMapper> mapping); + void ManyToAny<TIdTypeOfMetaType>(Action<IManyToAnyMapper> mapping); } } \ No newline at end of file Added: trunk/nhibernate/src/NHibernate/Mapping/ByCode/IManyToAnyMapper.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Mapping/ByCode/IManyToAnyMapper.cs (rev 0) +++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/IManyToAnyMapper.cs 2011-05-23 22:25:56 UTC (rev 5866) @@ -0,0 +1,25 @@ +using System; +using NHibernate.Type; + +namespace NHibernate.Mapping.ByCode +{ + public interface IManyToAnyMapper + { + void MetaType(IType metaType); + void MetaType<TMetaType>(); + void MetaType(System.Type metaType); + + void IdType(IType idType); + void IdType<TIdType>(); + void IdType(System.Type idType); + + void Columns(Action<IColumnMapper> idColumnMapping, Action<IColumnMapper> classColumnMapping); + + /// <summary> + /// Add or modify a value-class pair. + /// </summary> + /// <param name="value">The value of the DB-field dor a given association instance (should override <see cref="object.ToString"/>)</param> + /// <param name="entityType">The class associated to the specific <paramref name="value"/>. </param> + void MetaValue(object value, System.Type entityType); + } +} \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate/Mapping/ByCode/IModelExplicitDeclarationsHolder.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Mapping/ByCode/IModelExplicitDeclarationsHolder.cs 2011-05-23 20:10:41 UTC (rev 5865) +++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/IModelExplicitDeclarationsHolder.cs 2011-05-23 22:25:56 UTC (rev 5866) @@ -29,6 +29,8 @@ IEnumerable<MemberInfo> ManyToOneRelations { get; } IEnumerable<MemberInfo> ManyToManyRelations { get; } IEnumerable<MemberInfo> OneToManyRelations { get; } + IEnumerable<MemberInfo> ManyToAnyRelations { get; } + IEnumerable<MemberInfo> Any { get; } IEnumerable<MemberInfo> Poids { get; } @@ -61,6 +63,8 @@ void AddAsManyToOneRelation(MemberInfo member); void AddAsManyToManyRelation(MemberInfo member); void AddAsOneToManyRelation(MemberInfo member); + void AddAsManyToAnyRelation(MemberInfo member); + void AddAsAny(MemberInfo member); void AddAsPoid(MemberInfo member); Modified: trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CollectionElementRelation.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CollectionElementRelation.cs 2011-05-23 20:10:41 UTC (rev 5865) +++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CollectionElementRelation.cs 2011-05-23 22:25:56 UTC (rev 5866) @@ -46,6 +46,11 @@ elementRelationshipAssing(hbm); } + public void ManyToAny(System.Type idTypeOfMetaType, Action<IManyToAnyMapper> mapping) + { + throw new NotImplementedException(); + } + #endregion } } \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersHolder.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersHolder.cs 2011-05-23 20:10:41 UTC (rev 5865) +++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersHolder.cs 2011-05-23 22:25:56 UTC (rev 5866) @@ -24,6 +24,9 @@ private readonly Dictionary<PropertyPath, List<Action<IManyToManyMapper>>> collectionRelationManyToManyCustomizers = new Dictionary<PropertyPath, List<Action<IManyToManyMapper>>>(); + private readonly Dictionary<PropertyPath, List<Action<IManyToAnyMapper>>> collectionRelationManyToAnyCustomizers = + new Dictionary<PropertyPath, List<Action<IManyToAnyMapper>>>(); + private readonly Dictionary<PropertyPath, List<Action<IOneToManyMapper>>> collectionRelationOneToManyCustomizers = new Dictionary<PropertyPath, List<Action<IOneToManyMapper>>>(); @@ -190,6 +193,11 @@ AddCustomizer(collectionRelationOneToManyCustomizers, member, collectionRelationOneToManyCustomizer); } + public void AddCustomizer(PropertyPath member, Action<IManyToAnyMapper> collectionRelationManyToAnyCustomizer) + { + AddCustomizer(collectionRelationManyToAnyCustomizers, member, collectionRelationManyToAnyCustomizer); + } + public void AddCustomizer(PropertyPath member, Action<IMapKeyManyToManyMapper> mapKeyManyToManyCustomizer) { AddCustomizer(mapKeyManyToManyCustomizers, member, mapKeyManyToManyCustomizer); @@ -200,6 +208,11 @@ AddCustomizer(mapKeyElementCustomizers, member, mapKeyElementCustomizer); } + public void InvokeCustomizers(PropertyPath member, IManyToAnyMapper mapper) + { + InvokeCustomizers(collectionRelationManyToAnyCustomizers, member, mapper); + } + public IEnumerable<System.Type> GetAllCustomizedEntities() { return rootClassCustomizers.Keys.Concat(subclassCustomizers.Keys).Concat(joinedClassCustomizers.Keys).Concat(unionClassCustomizers.Keys); Modified: trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/CollectionElementRelationCustomizer.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/CollectionElementRelationCustomizer.cs 2011-05-23 20:10:41 UTC (rev 5865) +++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/CollectionElementRelationCustomizer.cs 2011-05-23 22:25:56 UTC (rev 5866) @@ -61,6 +61,21 @@ mapping(componetElementCustomizer); } + public void ManyToAny(System.Type idTypeOfMetaType, Action<IManyToAnyMapper> mapping) + { + if (mapping == null) + { + throw new ArgumentNullException("mapping"); + } + var manyToAnyCustomizer = new ManyToAnyCustomizer(explicitDeclarationsHolder, propertyPath, customizersHolder); + mapping(manyToAnyCustomizer); + } + + public void ManyToAny<TIdTypeOfMetaType>(Action<IManyToAnyMapper> mapping) + { + ManyToAny(typeof(TIdTypeOfMetaType), mapping); + } + #endregion } } \ No newline at end of file Added: trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/ManyToAnyCustomizer.cs =================================================================== (Binary files differ) Property changes on: trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/ManyToAnyCustomizer.cs ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Modified: trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/PropertyContainerCustomizer.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/PropertyContainerCustomizer.cs 2011-05-23 20:10:41 UTC (rev 5865) +++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/PropertyContainerCustomizer.cs 2011-05-23 22:25:56 UTC (rev 5866) @@ -185,7 +185,7 @@ { foreach (var member in members) { - CustomizersHolder.AddCustomizer(new PropertyPath(PropertyPath, member), am => am.IdType(idTypeOfMetaType)); + CustomizersHolder.AddCustomizer(new PropertyPath(PropertyPath, member), (IAnyMapper am) => am.IdType(idTypeOfMetaType)); CustomizersHolder.AddCustomizer(new PropertyPath(PropertyPath, member), mapping); explicitDeclarationsHolder.AddAsAny(member); Modified: trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/ExplicitDeclarationsHolder.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/ExplicitDeclarationsHolder.cs 2011-05-23 20:10:41 UTC (rev 5865) +++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/ExplicitDeclarationsHolder.cs 2011-05-23 22:25:56 UTC (rev 5866) @@ -1,3 +1,4 @@ +using System; using System.Collections.Generic; using System.Linq; using System.Reflection; @@ -15,6 +16,7 @@ private readonly HashSet<MemberInfo> lists = new HashSet<MemberInfo>(); private readonly HashSet<MemberInfo> manyToManyRelations = new HashSet<MemberInfo>(); private readonly HashSet<MemberInfo> manyToOneRelations = new HashSet<MemberInfo>(); + private readonly HashSet<MemberInfo> manyToAnyRelations = new HashSet<MemberInfo>(); private readonly HashSet<MemberInfo> naturalIds = new HashSet<MemberInfo>(); private readonly HashSet<MemberInfo> oneToManyRelations = new HashSet<MemberInfo>(); private readonly HashSet<MemberInfo> oneToOneRelations = new HashSet<MemberInfo>(); @@ -79,6 +81,11 @@ get { return oneToManyRelations; } } + public IEnumerable<MemberInfo> ManyToAnyRelations + { + get { return manyToAnyRelations; } + } + public IEnumerable<MemberInfo> Any { get { return any; } @@ -216,6 +223,11 @@ oneToManyRelations.Add(member); } + public void AddAsManyToAnyRelation(MemberInfo member) + { + manyToAnyRelations.Add(member); + } + public void AddAsAny(MemberInfo member) { any.Add(member); Modified: trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/ICustomizersHolder.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/ICustomizersHolder.cs 2011-05-23 20:10:41 UTC (rev 5865) +++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/ICustomizersHolder.cs 2011-05-23 22:25:56 UTC (rev 5866) @@ -48,16 +48,10 @@ void InvokeCustomizers(PropertyPath member, IComponentAsIdAttributesMapper mapper); void InvokeCustomizers(PropertyPath member, IDynamicComponentAttributesMapper mapper); - #region Collection Element relations invokers - - void InvokeCustomizers(PropertyPath member, IManyToManyMapper mapper); - void InvokeCustomizers(PropertyPath member, IElementMapper mapper); - void InvokeCustomizers(PropertyPath member, IOneToManyMapper mapper); - - #endregion - #region Dictionary key relations + void AddCustomizer(PropertyPath member, Action<IMapKeyManyToManyMapper> mapKeyManyToManyCustomizer); + void AddCustomizer(PropertyPath member, Action<IMapKeyMapper> mapKeyElementCustomizer); void InvokeCustomizers(PropertyPath member, IMapKeyManyToManyMapper mapper); void InvokeCustomizers(PropertyPath member, IMapKeyMapper mapper); @@ -68,16 +62,14 @@ void AddCustomizer(PropertyPath member, Action<IManyToManyMapper> collectionRelationManyToManyCustomizer); void AddCustomizer(PropertyPath member, Action<IElementMapper> collectionRelationElementCustomizer); void AddCustomizer(PropertyPath member, Action<IOneToManyMapper> collectionRelationOneToManyCustomizer); + void AddCustomizer(PropertyPath member, Action<IManyToAnyMapper> collectionRelationManyToAnyCustomizer); + void InvokeCustomizers(PropertyPath member, IManyToManyMapper mapper); + void InvokeCustomizers(PropertyPath member, IElementMapper mapper); + void InvokeCustomizers(PropertyPath member, IOneToManyMapper mapper); + void InvokeCustomizers(PropertyPath member, IManyToAnyMapper mapper); #endregion - #region Dictionary key relations - - void AddCustomizer(PropertyPath member, Action<IMapKeyManyToManyMapper> mapKeyManyToManyCustomizer); - void AddCustomizer(PropertyPath member, Action<IMapKeyMapper> mapKeyElementCustomizer); - - #endregion - IEnumerable<System.Type> GetAllCustomizedEntities(); } } \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate/Mapping/ByCode/ModelExplicitDeclarationsHolderExtensions.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Mapping/ByCode/ModelExplicitDeclarationsHolderExtensions.cs 2011-05-23 20:10:41 UTC (rev 5865) +++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/ModelExplicitDeclarationsHolderExtensions.cs 2011-05-23 22:25:56 UTC (rev 5866) @@ -20,6 +20,7 @@ System.Array.ForEach(source.OneToOneRelations.ToArray(), destination.AddAsOneToOneRelation); System.Array.ForEach(source.ManyToOneRelations.ToArray(), destination.AddAsManyToOneRelation); System.Array.ForEach(source.ManyToManyRelations.ToArray(), destination.AddAsManyToManyRelation); + System.Array.ForEach(source.ManyToAnyRelations.ToArray(), destination.AddAsManyToAnyRelation); System.Array.ForEach(source.OneToManyRelations.ToArray(), destination.AddAsOneToManyRelation); System.Array.ForEach(source.Any.ToArray(), destination.AddAsAny); Modified: trunk/nhibernate/src/NHibernate/Mapping/ByCode/SimpleModelInspector.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Mapping/ByCode/SimpleModelInspector.cs 2011-05-23 20:10:41 UTC (rev 5865) +++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/SimpleModelInspector.cs 2011-05-23 22:25:56 UTC (rev 5866) @@ -428,6 +428,11 @@ get { return declaredModel.OneToManyRelations; } } + IEnumerable<MemberInfo> IModelExplicitDeclarationsHolder.ManyToAnyRelations + { + get { return declaredModel.ManyToAnyRelations; } + } + IEnumerable<MemberInfo> IModelExplicitDeclarationsHolder.Any { get { return declaredModel.Any; } @@ -553,6 +558,11 @@ declaredModel.AddAsOneToManyRelation(member); } + void IModelExplicitDeclarationsHolder.AddAsManyToAnyRelation(MemberInfo member) + { + declaredModel.AddAsManyToAnyRelation(member); + } + void IModelExplicitDeclarationsHolder.AddAsAny(MemberInfo member) { declaredModel.AddAsAny(member); Modified: trunk/nhibernate/src/NHibernate/NHibernate.csproj =================================================================== --- trunk/nhibernate/src/NHibernate/NHibernate.csproj 2011-05-23 20:10:41 UTC (rev 5865) +++ trunk/nhibernate/src/NHibernate/NHibernate.csproj 2011-05-23 22:25:56 UTC (rev 5866) @@ -302,12 +302,14 @@ <Compile Include="Mapping\ByCode\Conformist\UnionSubclassMapping.cs" /> <Compile Include="Mapping\ByCode\ICompositeIdMapper.cs" /> <Compile Include="Mapping\ByCode\IDynamicComponentAttributesMapper.cs" /> + <Compile Include="Mapping\ByCode\IManyToAnyMapper.cs" /> <Compile Include="Mapping\ByCode\Impl\ComponentAsIdLikeComponetAttributesMapper.cs" /> <Compile Include="Mapping\ByCode\Impl\ComponentAsIdMapper.cs" /> <Compile Include="Mapping\ByCode\Impl\ComposedIdMapper.cs" /> <Compile Include="Mapping\ByCode\Impl\CustomizersImpl\ComponentAsIdCustomizer.cs" /> <Compile Include="Mapping\ByCode\Impl\CustomizersImpl\ComposedIdCustomizer.cs" /> <Compile Include="Mapping\ByCode\Impl\CustomizersImpl\DynamicComponentCustomizer.cs" /> + <Compile Include="Mapping\ByCode\Impl\CustomizersImpl\ManyToAnyCustomizer.cs" /> <Compile Include="Mapping\ByCode\Impl\DynamicComponentMapper.cs" /> <Compile Include="Mapping\ByCode\PropertyGeneration.cs" /> <Compile Include="Mapping\ByCode\PropertyToField.cs" /> Modified: trunk/nhibernate/src/NHibernate.Test/MappingByCode/ModelExplicitDeclarationsHolderMergeTest.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/MappingByCode/ModelExplicitDeclarationsHolderMergeTest.cs 2011-05-23 20:10:41 UTC (rev 5865) +++ trunk/nhibernate/src/NHibernate.Test/MappingByCode/ModelExplicitDeclarationsHolderMergeTest.cs 2011-05-23 22:25:56 UTC (rev 5866) @@ -24,6 +24,7 @@ private readonly HashSet<MemberInfo> idBags = new HashSet<MemberInfo>(); private readonly HashSet<MemberInfo> lists = new HashSet<MemberInfo>(); private readonly HashSet<MemberInfo> manyToManyRelations = new HashSet<MemberInfo>(); + private readonly HashSet<MemberInfo> manyToAnyRelations = new HashSet<MemberInfo>(); private readonly HashSet<MemberInfo> manyToOneRelations = new HashSet<MemberInfo>(); private readonly HashSet<MemberInfo> naturalIds = new HashSet<MemberInfo>(); private readonly HashSet<MemberInfo> oneToManyRelations = new HashSet<MemberInfo>(); @@ -126,6 +127,15 @@ } } + public IEnumerable<MemberInfo> ManyToAnyRelations + { + get + { + PropertiesGettersUsed.Add("ManyToAnyRelations"); + return manyToAnyRelations; + } + } + public IEnumerable<MemberInfo> Any { get @@ -285,6 +295,8 @@ public void AddAsManyToOneRelation(MemberInfo member) { } public void AddAsManyToManyRelation(MemberInfo member) { } public void AddAsOneToManyRelation(MemberInfo member) { } + public void AddAsManyToAnyRelation(MemberInfo member) {} + public void AddAsAny(MemberInfo member) { } public void AddAsPoid(MemberInfo member) { } public void AddAsPartOfComposedId(MemberInfo member) { } @@ -467,6 +479,17 @@ } [Test] + public void MergeManyToAnyRelations() + { + var destination = new ExplicitDeclarationsHolder(); + var source = new ExplicitDeclarationsHolder(); + source.AddAsManyToAnyRelation(property); + + destination.Merge(source); + destination.ManyToAnyRelations.Should().Have.Count.EqualTo(1); + } + + [Test] public void MergeManyToManyRelations() { var destination = new ExplicitDeclarationsHolder(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |