You can subscribe to this list here.
2004 |
Jan
|
Feb
|
Mar
|
Apr
(248) |
May
(82) |
Jun
(90) |
Jul
(177) |
Aug
(253) |
Sep
(157) |
Oct
(151) |
Nov
(143) |
Dec
(278) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2005 |
Jan
(152) |
Feb
(107) |
Mar
(177) |
Apr
(133) |
May
(259) |
Jun
(81) |
Jul
(119) |
Aug
(306) |
Sep
(416) |
Oct
(240) |
Nov
(329) |
Dec
(206) |
2006 |
Jan
(466) |
Feb
(382) |
Mar
(153) |
Apr
(162) |
May
(133) |
Jun
(21) |
Jul
(18) |
Aug
(37) |
Sep
(97) |
Oct
(114) |
Nov
(110) |
Dec
(28) |
2007 |
Jan
(74) |
Feb
(65) |
Mar
(49) |
Apr
(76) |
May
(43) |
Jun
(15) |
Jul
(68) |
Aug
(55) |
Sep
(63) |
Oct
(59) |
Nov
(70) |
Dec
(66) |
2008 |
Jan
(71) |
Feb
(60) |
Mar
(120) |
Apr
(31) |
May
(48) |
Jun
(81) |
Jul
(107) |
Aug
(51) |
Sep
(80) |
Oct
(83) |
Nov
(83) |
Dec
(79) |
2009 |
Jan
(83) |
Feb
(110) |
Mar
(97) |
Apr
(91) |
May
(291) |
Jun
(250) |
Jul
(197) |
Aug
(58) |
Sep
(54) |
Oct
(122) |
Nov
(68) |
Dec
(34) |
2010 |
Jan
(50) |
Feb
(17) |
Mar
(63) |
Apr
(61) |
May
(84) |
Jun
(81) |
Jul
(138) |
Aug
(144) |
Sep
(78) |
Oct
(26) |
Nov
(30) |
Dec
(61) |
2011 |
Jan
(33) |
Feb
(35) |
Mar
(166) |
Apr
(221) |
May
(109) |
Jun
(76) |
Jul
(27) |
Aug
(37) |
Sep
(1) |
Oct
(4) |
Nov
(2) |
Dec
(1) |
2012 |
Jan
|
Feb
|
Mar
(2) |
Apr
(2) |
May
|
Jun
|
Jul
(1) |
Aug
|
Sep
(1) |
Oct
|
Nov
(1) |
Dec
|
2013 |
Jan
|
Feb
(1) |
Mar
|
Apr
|
May
|
Jun
|
Jul
(1) |
Aug
(1) |
Sep
(3) |
Oct
(2) |
Nov
|
Dec
(1) |
2014 |
Jan
(1) |
Feb
(1) |
Mar
(3) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: <fab...@us...> - 2011-04-14 19:50:44
|
Revision: 5703 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5703&view=rev Author: fabiomaulo Date: 2011-04-14 19:50:38 +0000 (Thu, 14 Apr 2011) Log Message: ----------- Minor (API simplified) Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Mapping/ByCode/IPropertyContainerMapper.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/PropertyContainerCustomizer.cs Modified: trunk/nhibernate/src/NHibernate/Mapping/ByCode/IPropertyContainerMapper.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Mapping/ByCode/IPropertyContainerMapper.cs 2011-04-14 19:31:59 UTC (rev 5702) +++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/IPropertyContainerMapper.cs 2011-04-14 19:50:38 UTC (rev 5703) @@ -31,14 +31,20 @@ void Set<TElement>(Expression<Func<TEntity, IEnumerable<TElement>>> property, Action<ISetPropertiesMapper<TEntity, TElement>> collectionMapping, Action<ICollectionElementRelation<TElement>> mapping); + void Set<TElement>(Expression<Func<TEntity, IEnumerable<TElement>>> property, + Action<ISetPropertiesMapper<TEntity, TElement>> collectionMapping); void Bag<TElement>(Expression<Func<TEntity, IEnumerable<TElement>>> property, Action<IBagPropertiesMapper<TEntity, TElement>> collectionMapping, Action<ICollectionElementRelation<TElement>> mapping); + void Bag<TElement>(Expression<Func<TEntity, IEnumerable<TElement>>> property, + Action<IBagPropertiesMapper<TEntity, TElement>> collectionMapping); void List<TElement>(Expression<Func<TEntity, IEnumerable<TElement>>> property, Action<IListPropertiesMapper<TEntity, TElement>> collectionMapping, Action<ICollectionElementRelation<TElement>> mapping); + void List<TElement>(Expression<Func<TEntity, IEnumerable<TElement>>> property, + Action<IListPropertiesMapper<TEntity, TElement>> collectionMapping); void Map<TKey, TElement>(Expression<Func<TEntity, IDictionary<TKey, TElement>>> property, Action<IMapPropertiesMapper<TEntity, TKey, TElement>> collectionMapping, @@ -48,10 +54,14 @@ void Map<TKey, TElement>(Expression<Func<TEntity, IDictionary<TKey, TElement>>> property, Action<IMapPropertiesMapper<TEntity, TKey, TElement>> collectionMapping, Action<ICollectionElementRelation<TElement>> mapping); + void Map<TKey, TElement>(Expression<Func<TEntity, IDictionary<TKey, TElement>>> property, + Action<IMapPropertiesMapper<TEntity, TKey, TElement>> collectionMapping); void IdBag<TElement>(Expression<Func<TEntity, IEnumerable<TElement>>> property, Action<IIdBagPropertiesMapper<TEntity, TElement>> collectionMapping, Action<ICollectionElementRelation<TElement>> mapping); + void IdBag<TElement>(Expression<Func<TEntity, IEnumerable<TElement>>> property, + Action<IIdBagPropertiesMapper<TEntity, TElement>> collectionMapping); } public interface IPropertyContainerMapper<TEntity> : ICollectionPropertiesContainerMapper<TEntity>, IPlainPropertyContainerMapper<TEntity> where TEntity : class {} Modified: trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/PropertyContainerCustomizer.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/PropertyContainerCustomizer.cs 2011-04-14 19:31:59 UTC (rev 5702) +++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/PropertyContainerCustomizer.cs 2011-04-14 19:50:38 UTC (rev 5703) @@ -133,6 +133,12 @@ RegisterSetMapping(property, collectionMapping, mapping); } + public void Set<TElement>(Expression<Func<TEntity, IEnumerable<TElement>>> property, + Action<ISetPropertiesMapper<TEntity, TElement>> collectionMapping) + { + Set(property, collectionMapping, x => { }); + } + 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); @@ -150,6 +156,11 @@ { RegisterBagMapping(property, collectionMapping, mapping); } + public void Bag<TElement>(Expression<Func<TEntity, IEnumerable<TElement>>> property, + Action<IBagPropertiesMapper<TEntity, TElement>> collectionMapping) + { + Bag(property, collectionMapping, x => { }); + } protected virtual void RegisterBagMapping<TElement>(Expression<Func<TEntity, IEnumerable<TElement>>> property, Action<IBagPropertiesMapper<TEntity, TElement>> collectionMapping, Action<ICollectionElementRelation<TElement>> mapping) { @@ -168,6 +179,11 @@ { RegisterListMapping(property, collectionMapping, mapping); } + public void List<TElement>(Expression<Func<TEntity, IEnumerable<TElement>>> property, + Action<IListPropertiesMapper<TEntity, TElement>> collectionMapping) + { + List(property, collectionMapping, x => { }); + } protected virtual void RegisterListMapping<TElement>(Expression<Func<TEntity, IEnumerable<TElement>>> property, Action<IListPropertiesMapper<TEntity, TElement>> collectionMapping, Action<ICollectionElementRelation<TElement>> mapping) { @@ -187,6 +203,11 @@ { RegisterMapMapping(property, collectionMapping, keyMapping, mapping); } + public void Map<TKey, TElement>(Expression<Func<TEntity, IDictionary<TKey, TElement>>> property, + Action<IMapPropertiesMapper<TEntity, TKey, TElement>> collectionMapping) + { + Map(property, collectionMapping, keyMapping => { }, x => { }); + } 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) { @@ -217,6 +238,12 @@ RegisterIdBagMapping(property, collectionMapping, mapping); } + public void IdBag<TElement>(Expression<Func<TEntity, IEnumerable<TElement>>> property, + Action<IIdBagPropertiesMapper<TEntity, TElement>> collectionMapping) + { + RegisterIdBagMapping(property, collectionMapping, x => { }); + } + 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); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2011-04-14 19:32:06
|
Revision: 5702 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5702&view=rev Author: fabiomaulo Date: 2011-04-14 19:31:59 +0000 (Thu, 14 Apr 2011) Log Message: ----------- by-code: Synchronize for entities Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Mapping/ByCode/IEntityAttributesMapper.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/ClassMapper.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/ClassCustomizer.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/JoinedSubclassCustomizer.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/SubclassCustomizer.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/UnionSubclassCustomizer.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/JoinedSubclassMapper.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/SubclassMapper.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/UnionSubclassMapper.cs trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate.Test/MappingByCode/MappersTests/ClassMapperTests/TablesSincronizationTests.cs trunk/nhibernate/src/NHibernate.Test/MappingByCode/MappersTests/JoinedSubclassMapperTests/TablesSincronizationTests.cs trunk/nhibernate/src/NHibernate.Test/MappingByCode/MappersTests/SubclassMapperTests/TablesSincronizationTests.cs trunk/nhibernate/src/NHibernate.Test/MappingByCode/MappersTests/UnionSubclassMapperTests/TablesSincronizationTests.cs Modified: trunk/nhibernate/src/NHibernate/Mapping/ByCode/IEntityAttributesMapper.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Mapping/ByCode/IEntityAttributesMapper.cs 2011-04-14 18:13:35 UTC (rev 5701) +++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/IEntityAttributesMapper.cs 2011-04-14 19:31:59 UTC (rev 5702) @@ -12,5 +12,6 @@ void BatchSize(int value); void SelectBeforeUpdate(bool value); void Persister<T>() where T : IEntityPersister; + void Synchronize(params string[] table); } } \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/ClassMapper.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/ClassMapper.cs 2011-04-14 18:13:35 UTC (rev 5701) +++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/ClassMapper.cs 2011-04-14 19:31:59 UTC (rev 5702) @@ -247,6 +247,18 @@ classMapping.persister = typeof (T).GetShortClassName(MapDoc); } + public void Synchronize(params string[] table) + { + if (table == null) + { + return; + } + var existingSyncs = new HashSet<string>(classMapping.synchronize != null ? classMapping.synchronize.Select(x => x.table) : Enumerable.Empty<string>()); + System.Array.ForEach(table.Where(x => x != null).Select(tableName => tableName.Trim()).Where(cleanedName => !"".Equals(cleanedName)).ToArray(), + x => existingSyncs.Add(x.Trim())); + classMapping.synchronize = existingSyncs.Select(x => new HbmSynchronize {table = x}).ToArray(); + } + #endregion #region Implementation of IEntitySqlsMapper Modified: trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/ClassCustomizer.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/ClassCustomizer.cs 2011-04-14 18:13:35 UTC (rev 5701) +++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/ClassCustomizer.cs 2011-04-14 19:31:59 UTC (rev 5702) @@ -178,6 +178,11 @@ CustomizersHolder.AddCustomizer(typeof(TEntity), (IClassMapper m) => m.Persister<T>()); } + public void Synchronize(params string[] table) + { + CustomizersHolder.AddCustomizer(typeof(TEntity), (IClassMapper m) => m.Synchronize(table)); + } + #endregion #region Implementation of IEntitySqlsMapper Modified: trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/JoinedSubclassCustomizer.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/JoinedSubclassCustomizer.cs 2011-04-14 18:13:35 UTC (rev 5701) +++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/JoinedSubclassCustomizer.cs 2011-04-14 19:31:59 UTC (rev 5702) @@ -70,6 +70,12 @@ CustomizersHolder.AddCustomizer(typeof (TEntity), (IJoinedSubclassAttributesMapper m) => m.Persister<T>()); } + public void Synchronize(params string[] table) + { + CustomizersHolder.AddCustomizer(typeof(TEntity), (IJoinedSubclassAttributesMapper m) => m.Synchronize(table)); + + } + #endregion #region Implementation of IEntitySqlsMapper Modified: trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/SubclassCustomizer.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/SubclassCustomizer.cs 2011-04-14 18:13:35 UTC (rev 5701) +++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/SubclassCustomizer.cs 2011-04-14 19:31:59 UTC (rev 5702) @@ -88,6 +88,11 @@ CustomizersHolder.AddCustomizer(typeof (TEntity), (ISubclassMapper m) => m.Persister<T>()); } + public void Synchronize(params string[] table) + { + CustomizersHolder.AddCustomizer(typeof(TEntity), (ISubclassMapper m) => m.Synchronize(table)); + } + #endregion #region Implementation of IEntitySqlsMapper Modified: trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/UnionSubclassCustomizer.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/UnionSubclassCustomizer.cs 2011-04-14 18:13:35 UTC (rev 5701) +++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/UnionSubclassCustomizer.cs 2011-04-14 19:31:59 UTC (rev 5702) @@ -57,6 +57,11 @@ CustomizersHolder.AddCustomizer(typeof (TEntity), (IUnionSubclassAttributesMapper m) => m.Persister<T>()); } + public void Synchronize(params string[] table) + { + CustomizersHolder.AddCustomizer(typeof(TEntity), (IUnionSubclassAttributesMapper m) => m.Synchronize(table)); + } + #endregion #region Implementation of IEntitySqlsMapper Modified: trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/JoinedSubclassMapper.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/JoinedSubclassMapper.cs 2011-04-14 18:13:35 UTC (rev 5701) +++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/JoinedSubclassMapper.cs 2011-04-14 19:31:59 UTC (rev 5702) @@ -1,4 +1,5 @@ using System; +using System.Collections.Generic; using System.Linq; using NHibernate.Cfg.MappingSchema; using NHibernate.Persister.Entity; @@ -84,6 +85,18 @@ classMapping.persister = typeof (T).GetShortClassName(MapDoc); } + public void Synchronize(params string[] table) + { + if (table == null) + { + return; + } + var existingSyncs = new HashSet<string>(classMapping.synchronize != null ? classMapping.synchronize.Select(x => x.table) : Enumerable.Empty<string>()); + System.Array.ForEach(table.Where(x => x != null).Select(tableName => tableName.Trim()).Where(cleanedName => !"".Equals(cleanedName)).ToArray(), + x => existingSyncs.Add(x.Trim())); + classMapping.synchronize = existingSyncs.Select(x => new HbmSynchronize { table = x }).ToArray(); + } + #endregion #region Implementation of IEntitySqlsMapper Modified: trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/SubclassMapper.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/SubclassMapper.cs 2011-04-14 18:13:35 UTC (rev 5701) +++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/SubclassMapper.cs 2011-04-14 19:31:59 UTC (rev 5702) @@ -123,6 +123,18 @@ classMapping.persister = typeof (T).GetShortClassName(MapDoc); } + public void Synchronize(params string[] table) + { + if (table == null) + { + return; + } + var existingSyncs = new HashSet<string>(classMapping.synchronize != null ? classMapping.synchronize.Select(x => x.table) : Enumerable.Empty<string>()); + System.Array.ForEach(table.Where(x => x != null).Select(tableName => tableName.Trim()).Where(cleanedName => !"".Equals(cleanedName)).ToArray(), + x => existingSyncs.Add(x.Trim())); + classMapping.synchronize = existingSyncs.Select(x => new HbmSynchronize { table = x }).ToArray(); + } + #endregion #region Implementation of IEntitySqlsMapper Modified: trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/UnionSubclassMapper.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/UnionSubclassMapper.cs 2011-04-14 18:13:35 UTC (rev 5701) +++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/UnionSubclassMapper.cs 2011-04-14 19:31:59 UTC (rev 5702) @@ -1,4 +1,5 @@ using System; +using System.Collections.Generic; using System.Linq; using NHibernate.Cfg.MappingSchema; using NHibernate.Persister.Entity; @@ -80,6 +81,18 @@ classMapping.persister = typeof (T).GetShortClassName(MapDoc); } + public void Synchronize(params string[] table) + { + if (table == null) + { + return; + } + var existingSyncs = new HashSet<string>(classMapping.synchronize != null ? classMapping.synchronize.Select(x => x.table) : Enumerable.Empty<string>()); + System.Array.ForEach(table.Where(x => x != null).Select(tableName => tableName.Trim()).Where(cleanedName => !"".Equals(cleanedName)).ToArray(), + x => existingSyncs.Add(x.Trim())); + classMapping.synchronize = existingSyncs.Select(x => new HbmSynchronize { table = x }).ToArray(); + } + #endregion #region Implementation of IEntitySqlsMapper Added: trunk/nhibernate/src/NHibernate.Test/MappingByCode/MappersTests/ClassMapperTests/TablesSincronizationTests.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/MappingByCode/MappersTests/ClassMapperTests/TablesSincronizationTests.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/MappingByCode/MappersTests/ClassMapperTests/TablesSincronizationTests.cs 2011-04-14 19:31:59 UTC (rev 5702) @@ -0,0 +1,62 @@ +using System.Linq; +using NHibernate.Cfg.MappingSchema; +using NHibernate.Mapping.ByCode.Impl; +using NUnit.Framework; +using SharpTestsEx; + +namespace NHibernate.Test.MappingByCode.MappersTests.ClassMapperTests +{ + public class TablesSincronizationTests + { + private class EntitySimple + { + public int Id { get; set; } + } + + [Test] + public void WhenSetSyncWithNullThenDoesNotThrows() + { + var mapdoc = new HbmMapping(); + var rc = new ClassMapper(typeof(EntitySimple), mapdoc, For<EntitySimple>.Property(x => x.Id)); + rc.Executing(x=>x.Synchronize(null)).NotThrows(); + } + + [Test] + public void WhenSetSyncMixedWithNullAndEmptyThenAddOnlyValid() + { + var mapdoc = new HbmMapping(); + var rc = new ClassMapper(typeof(EntitySimple), mapdoc, For<EntitySimple>.Property(x => x.Id)); + rc.Synchronize("", " ATable ", " ", null); + mapdoc.RootClasses[0].Synchronize.Single().table.Should().Be("ATable"); + } + + [Test] + public void WhenSetMoreSyncThenAddAll() + { + var mapdoc = new HbmMapping(); + var rc = new ClassMapper(typeof(EntitySimple), mapdoc, For<EntitySimple>.Property(x => x.Id)); + rc.Synchronize("T1", "T2", "T3", null); + mapdoc.RootClasses[0].Synchronize.Select(x => x.table).Should().Have.SameValuesAs("T1", "T2", "T3"); + } + + [Test] + public void WhenSetMoreThenOnceThenAddAll() + { + var mapdoc = new HbmMapping(); + var rc = new ClassMapper(typeof(EntitySimple), mapdoc, For<EntitySimple>.Property(x => x.Id)); + rc.Synchronize("T1", "T2"); + rc.Synchronize("T3"); + mapdoc.RootClasses[0].Synchronize.Select(x => x.table).Should().Have.SameValuesAs("T1", "T2", "T3"); + } + + [Test] + public void WhenSetMoreThenOnceThenDoesNotDuplicate() + { + var mapdoc = new HbmMapping(); + var rc = new ClassMapper(typeof(EntitySimple), mapdoc, For<EntitySimple>.Property(x => x.Id)); + rc.Synchronize("T1", "T2"); + rc.Synchronize("T3", "T2"); + mapdoc.RootClasses[0].Synchronize.Select(x => x.table).Should().Have.SameValuesAs("T1", "T2", "T3"); + } + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/MappingByCode/MappersTests/JoinedSubclassMapperTests/TablesSincronizationTests.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/MappingByCode/MappersTests/JoinedSubclassMapperTests/TablesSincronizationTests.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/MappingByCode/MappersTests/JoinedSubclassMapperTests/TablesSincronizationTests.cs 2011-04-14 19:31:59 UTC (rev 5702) @@ -0,0 +1,66 @@ +using System.Linq; +using NHibernate.Cfg.MappingSchema; +using NHibernate.Mapping.ByCode.Impl; +using NHibernate.Persister.Entity; +using NUnit.Framework; +using SharpTestsEx; + +namespace NHibernate.Test.MappingByCode.MappersTests.JoinedSubclassMapperTests +{ + public class TablesSincronizationTests + { + private class EntitySimple + { + public int Id { get; set; } + } + + private class InheritedSimple : EntitySimple + { + } + [Test] + public void WhenSetSyncWithNullThenDoesNotThrows() + { + var mapdoc = new HbmMapping(); + var rc = new JoinedSubclassMapper(typeof(InheritedSimple), mapdoc); + rc.Executing(x => x.Synchronize(null)).NotThrows(); + } + + [Test] + public void WhenSetSyncMixedWithNullAndEmptyThenAddOnlyValid() + { + var mapdoc = new HbmMapping(); + var rc = new JoinedSubclassMapper(typeof(InheritedSimple), mapdoc); + rc.Synchronize("", " ATable ", " ", null); + mapdoc.JoinedSubclasses[0].Synchronize.Single().table.Should().Be("ATable"); + } + + [Test] + public void WhenSetMoreSyncThenAddAll() + { + var mapdoc = new HbmMapping(); + var rc = new JoinedSubclassMapper(typeof(InheritedSimple), mapdoc); + rc.Synchronize("T1", "T2", "T3", null); + mapdoc.JoinedSubclasses[0].Synchronize.Select(x => x.table).Should().Have.SameValuesAs("T1", "T2", "T3"); + } + + [Test] + public void WhenSetMoreThenOnceThenAddAll() + { + var mapdoc = new HbmMapping(); + var rc = new JoinedSubclassMapper(typeof(InheritedSimple), mapdoc); + rc.Synchronize("T1", "T2"); + rc.Synchronize("T3"); + mapdoc.JoinedSubclasses[0].Synchronize.Select(x => x.table).Should().Have.SameValuesAs("T1", "T2", "T3"); + } + + [Test] + public void WhenSetMoreThenOnceThenDoesNotDuplicate() + { + var mapdoc = new HbmMapping(); + var rc = new JoinedSubclassMapper(typeof(InheritedSimple), mapdoc); + rc.Synchronize("T1", "T2"); + rc.Synchronize("T3", "T2"); + mapdoc.JoinedSubclasses[0].Synchronize.Select(x => x.table).Should().Have.SameValuesAs("T1", "T2", "T3"); + } + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/MappingByCode/MappersTests/SubclassMapperTests/TablesSincronizationTests.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/MappingByCode/MappersTests/SubclassMapperTests/TablesSincronizationTests.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/MappingByCode/MappersTests/SubclassMapperTests/TablesSincronizationTests.cs 2011-04-14 19:31:59 UTC (rev 5702) @@ -0,0 +1,67 @@ +using System.Linq; +using NHibernate.Cfg.MappingSchema; +using NHibernate.Mapping.ByCode.Impl; +using NHibernate.Persister.Entity; +using NUnit.Framework; +using SharpTestsEx; + +namespace NHibernate.Test.MappingByCode.MappersTests.SubclassMapperTests +{ + public class TablesSincronizationTests + { + private class EntitySimple + { + public int Id { get; set; } + } + + private class InheritedSimple : EntitySimple + { + } + + [Test] + public void WhenSetSyncWithNullThenDoesNotThrows() + { + var mapdoc = new HbmMapping(); + var rc = new SubclassMapper(typeof(InheritedSimple), mapdoc); + rc.Executing(x => x.Synchronize(null)).NotThrows(); + } + + [Test] + public void WhenSetSyncMixedWithNullAndEmptyThenAddOnlyValid() + { + var mapdoc = new HbmMapping(); + var rc = new SubclassMapper(typeof(InheritedSimple), mapdoc); + rc.Synchronize("", " ATable ", " ", null); + mapdoc.SubClasses[0].Synchronize.Single().table.Should().Be("ATable"); + } + + [Test] + public void WhenSetMoreSyncThenAddAll() + { + var mapdoc = new HbmMapping(); + var rc = new SubclassMapper(typeof(InheritedSimple), mapdoc); + rc.Synchronize("T1", "T2", "T3", null); + mapdoc.SubClasses[0].Synchronize.Select(x => x.table).Should().Have.SameValuesAs("T1", "T2", "T3"); + } + + [Test] + public void WhenSetMoreThenOnceThenAddAll() + { + var mapdoc = new HbmMapping(); + var rc = new SubclassMapper(typeof(InheritedSimple), mapdoc); + rc.Synchronize("T1", "T2"); + rc.Synchronize("T3"); + mapdoc.SubClasses[0].Synchronize.Select(x => x.table).Should().Have.SameValuesAs("T1", "T2", "T3"); + } + + [Test] + public void WhenSetMoreThenOnceThenDoesNotDuplicate() + { + var mapdoc = new HbmMapping(); + var rc = new SubclassMapper(typeof(InheritedSimple), mapdoc); + rc.Synchronize("T1", "T2"); + rc.Synchronize("T3", "T2"); + mapdoc.SubClasses[0].Synchronize.Select(x => x.table).Should().Have.SameValuesAs("T1", "T2", "T3"); + } + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/MappingByCode/MappersTests/UnionSubclassMapperTests/TablesSincronizationTests.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/MappingByCode/MappersTests/UnionSubclassMapperTests/TablesSincronizationTests.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/MappingByCode/MappersTests/UnionSubclassMapperTests/TablesSincronizationTests.cs 2011-04-14 19:31:59 UTC (rev 5702) @@ -0,0 +1,67 @@ +using System.Linq; +using NHibernate.Cfg.MappingSchema; +using NHibernate.Mapping.ByCode.Impl; +using NHibernate.Persister.Entity; +using NUnit.Framework; +using SharpTestsEx; + +namespace NHibernate.Test.MappingByCode.MappersTests.UnionSubclassMapperTests +{ + public class TablesSincronizationTests + { + private class EntitySimple + { + public int Id { get; set; } + } + + private class InheritedSimple : EntitySimple + { + } + + [Test] + public void WhenSetSyncWithNullThenDoesNotThrows() + { + var mapdoc = new HbmMapping(); + var rc = new UnionSubclassMapper(typeof(InheritedSimple), mapdoc); + rc.Executing(x => x.Synchronize(null)).NotThrows(); + } + + [Test] + public void WhenSetSyncMixedWithNullAndEmptyThenAddOnlyValid() + { + var mapdoc = new HbmMapping(); + var rc = new UnionSubclassMapper(typeof(InheritedSimple), mapdoc); + rc.Synchronize("", " ATable ", " ", null); + mapdoc.UnionSubclasses[0].Synchronize.Single().table.Should().Be("ATable"); + } + + [Test] + public void WhenSetMoreSyncThenAddAll() + { + var mapdoc = new HbmMapping(); + var rc = new UnionSubclassMapper(typeof(InheritedSimple), mapdoc); + rc.Synchronize("T1", "T2", "T3", null); + mapdoc.UnionSubclasses[0].Synchronize.Select(x => x.table).Should().Have.SameValuesAs("T1", "T2", "T3"); + } + + [Test] + public void WhenSetMoreThenOnceThenAddAll() + { + var mapdoc = new HbmMapping(); + var rc = new UnionSubclassMapper(typeof(InheritedSimple), mapdoc); + rc.Synchronize("T1", "T2"); + rc.Synchronize("T3"); + mapdoc.UnionSubclasses[0].Synchronize.Select(x => x.table).Should().Have.SameValuesAs("T1", "T2", "T3"); + } + + [Test] + public void WhenSetMoreThenOnceThenDoesNotDuplicate() + { + var mapdoc = new HbmMapping(); + var rc = new UnionSubclassMapper(typeof(InheritedSimple), mapdoc); + rc.Synchronize("T1", "T2"); + rc.Synchronize("T3", "T2"); + mapdoc.UnionSubclasses[0].Synchronize.Select(x => x.table).Should().Have.SameValuesAs("T1", "T2", "T3"); + } + } +} \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2011-04-14 18:13:35 UTC (rev 5701) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2011-04-14 19:31:59 UTC (rev 5702) @@ -541,14 +541,18 @@ <Compile Include="MappingByCode\MappersTests\AbstractPropertyContainerMapperTest.cs" /> <Compile Include="MappingByCode\MappersTests\ClassMapperTests\ClassMapperWithJoinPropertiesTest.cs" /> <Compile Include="MappingByCode\MappersTests\ClassMapperTests\SetPersisterTests.cs" /> + <Compile Include="MappingByCode\MappersTests\ClassMapperTests\TablesSincronizationTests.cs" /> <Compile Include="MappingByCode\MappersTests\CollectionIdMapperTests.cs" /> <Compile Include="MappingByCode\MappersTests\FakeUserCollectionType.cs" /> <Compile Include="MappingByCode\MappersTests\IdBagMapperTest.cs" /> <Compile Include="MappingByCode\MappersTests\JoinedSubclassMapperTests\SetPersisterTests.cs" /> + <Compile Include="MappingByCode\MappersTests\JoinedSubclassMapperTests\TablesSincronizationTests.cs" /> <Compile Include="MappingByCode\MappersTests\JoinMapperTests.cs" /> <Compile Include="MappingByCode\MappersTests\SubclassMapperTests\SetPersisterTests.cs" /> + <Compile Include="MappingByCode\MappersTests\SubclassMapperTests\TablesSincronizationTests.cs" /> <Compile Include="MappingByCode\MappersTests\SubclassMapperWithJoinPropertiesTest.cs" /> <Compile Include="MappingByCode\MappersTests\UnionSubclassMapperTests\SetPersisterTests.cs" /> + <Compile Include="MappingByCode\MappersTests\UnionSubclassMapperTests\TablesSincronizationTests.cs" /> <Compile Include="MappingByCode\MixAutomapping\ArrayCollectionTests.cs" /> <Compile Include="MappingByCode\MixAutomapping\BagCollectionTests.cs" /> <Compile Include="MappingByCode\MixAutomapping\ComponentsTests.cs" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2011-04-14 18:13:41
|
Revision: 5701 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5701&view=rev Author: fabiomaulo Date: 2011-04-14 18:13:35 +0000 (Thu, 14 Apr 2011) Log Message: ----------- Added passing tests Modified Paths: -------------- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate.Test/MappingByCode/MappersTests/ClassMapperTests/SetPersisterTests.cs trunk/nhibernate/src/NHibernate.Test/MappingByCode/MappersTests/JoinedSubclassMapperTests/ trunk/nhibernate/src/NHibernate.Test/MappingByCode/MappersTests/JoinedSubclassMapperTests/SetPersisterTests.cs trunk/nhibernate/src/NHibernate.Test/MappingByCode/MappersTests/SubclassMapperTests/ trunk/nhibernate/src/NHibernate.Test/MappingByCode/MappersTests/SubclassMapperTests/SetPersisterTests.cs trunk/nhibernate/src/NHibernate.Test/MappingByCode/MappersTests/UnionSubclassMapperTests/ trunk/nhibernate/src/NHibernate.Test/MappingByCode/MappersTests/UnionSubclassMapperTests/SetPersisterTests.cs Added: trunk/nhibernate/src/NHibernate.Test/MappingByCode/MappersTests/ClassMapperTests/SetPersisterTests.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/MappingByCode/MappersTests/ClassMapperTests/SetPersisterTests.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/MappingByCode/MappersTests/ClassMapperTests/SetPersisterTests.cs 2011-04-14 18:13:35 UTC (rev 5701) @@ -0,0 +1,25 @@ +using NHibernate.Cfg.MappingSchema; +using NHibernate.Mapping.ByCode.Impl; +using NHibernate.Persister.Entity; +using NUnit.Framework; +using SharpTestsEx; + +namespace NHibernate.Test.MappingByCode.MappersTests.ClassMapperTests +{ + public class SetPersisterTests + { + private class EntitySimple + { + public int Id { get; set; } + } + + [Test] + public void CanSetPersister() + { + var mapdoc = new HbmMapping(); + var rc = new ClassMapper(typeof(EntitySimple), mapdoc, For<EntitySimple>.Property(x => x.Id)); + rc.Persister<SingleTableEntityPersister>(); + mapdoc.RootClasses[0].Persister.Should().Contain("SingleTableEntityPersister"); + } + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/MappingByCode/MappersTests/JoinedSubclassMapperTests/SetPersisterTests.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/MappingByCode/MappersTests/JoinedSubclassMapperTests/SetPersisterTests.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/MappingByCode/MappersTests/JoinedSubclassMapperTests/SetPersisterTests.cs 2011-04-14 18:13:35 UTC (rev 5701) @@ -0,0 +1,29 @@ +using NHibernate.Cfg.MappingSchema; +using NHibernate.Mapping.ByCode.Impl; +using NHibernate.Persister.Entity; +using NUnit.Framework; +using SharpTestsEx; + +namespace NHibernate.Test.MappingByCode.MappersTests.JoinedSubclassMapperTests +{ + public class SetPersisterTests + { + private class EntitySimple + { + public int Id { get; set; } + } + + private class InheritedSimple : EntitySimple + { + } + + [Test] + public void CanSetPersister() + { + var mapdoc = new HbmMapping(); + var rc = new JoinedSubclassMapper(typeof(InheritedSimple), mapdoc); + rc.Persister<JoinedSubclassEntityPersister>(); + mapdoc.JoinedSubclasses[0].Persister.Should().Contain("JoinedSubclassEntityPersister"); + } + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/MappingByCode/MappersTests/SubclassMapperTests/SetPersisterTests.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/MappingByCode/MappersTests/SubclassMapperTests/SetPersisterTests.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/MappingByCode/MappersTests/SubclassMapperTests/SetPersisterTests.cs 2011-04-14 18:13:35 UTC (rev 5701) @@ -0,0 +1,29 @@ +using NHibernate.Cfg.MappingSchema; +using NHibernate.Mapping.ByCode.Impl; +using NHibernate.Persister.Entity; +using NUnit.Framework; +using SharpTestsEx; + +namespace NHibernate.Test.MappingByCode.MappersTests.SubclassMapperTests +{ + public class SetPersisterTests + { + private class EntitySimple + { + public int Id { get; set; } + } + + private class HineritedSimple: EntitySimple + { + } + + [Test] + public void CanSetPersister() + { + var mapdoc = new HbmMapping(); + var rc = new SubclassMapper(typeof(HineritedSimple), mapdoc); + rc.Persister<SingleTableEntityPersister>(); + mapdoc.SubClasses[0].Persister.Should().Contain("SingleTableEntityPersister"); + } + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/MappingByCode/MappersTests/UnionSubclassMapperTests/SetPersisterTests.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/MappingByCode/MappersTests/UnionSubclassMapperTests/SetPersisterTests.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/MappingByCode/MappersTests/UnionSubclassMapperTests/SetPersisterTests.cs 2011-04-14 18:13:35 UTC (rev 5701) @@ -0,0 +1,29 @@ +using NHibernate.Cfg.MappingSchema; +using NHibernate.Mapping.ByCode.Impl; +using NHibernate.Persister.Entity; +using NUnit.Framework; +using SharpTestsEx; + +namespace NHibernate.Test.MappingByCode.MappersTests.UnionSubclassMapperTests +{ + public class SetPersisterTests + { + private class EntitySimple + { + public int Id { get; set; } + } + + private class InheritedSimple : EntitySimple + { + } + + [Test] + public void CanSetPersister() + { + var mapdoc = new HbmMapping(); + var rc = new UnionSubclassMapper(typeof(InheritedSimple), mapdoc); + rc.Persister<UnionSubclassEntityPersister>(); + mapdoc.UnionSubclasses[0].Persister.Should().Contain("UnionSubclassEntityPersister"); + } + } +} \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2011-04-14 18:06:16 UTC (rev 5700) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2011-04-14 18:13:35 UTC (rev 5701) @@ -540,11 +540,15 @@ <Compile Include="MappingByCode\For.cs" /> <Compile Include="MappingByCode\MappersTests\AbstractPropertyContainerMapperTest.cs" /> <Compile Include="MappingByCode\MappersTests\ClassMapperTests\ClassMapperWithJoinPropertiesTest.cs" /> + <Compile Include="MappingByCode\MappersTests\ClassMapperTests\SetPersisterTests.cs" /> <Compile Include="MappingByCode\MappersTests\CollectionIdMapperTests.cs" /> <Compile Include="MappingByCode\MappersTests\FakeUserCollectionType.cs" /> <Compile Include="MappingByCode\MappersTests\IdBagMapperTest.cs" /> + <Compile Include="MappingByCode\MappersTests\JoinedSubclassMapperTests\SetPersisterTests.cs" /> <Compile Include="MappingByCode\MappersTests\JoinMapperTests.cs" /> + <Compile Include="MappingByCode\MappersTests\SubclassMapperTests\SetPersisterTests.cs" /> <Compile Include="MappingByCode\MappersTests\SubclassMapperWithJoinPropertiesTest.cs" /> + <Compile Include="MappingByCode\MappersTests\UnionSubclassMapperTests\SetPersisterTests.cs" /> <Compile Include="MappingByCode\MixAutomapping\ArrayCollectionTests.cs" /> <Compile Include="MappingByCode\MixAutomapping\BagCollectionTests.cs" /> <Compile Include="MappingByCode\MixAutomapping\ComponentsTests.cs" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2011-04-14 18:06:22
|
Revision: 5700 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5700&view=rev Author: fabiomaulo Date: 2011-04-14 18:06:16 +0000 (Thu, 14 Apr 2011) Log Message: ----------- Minor (moved test) Modified Paths: -------------- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate.Test/MappingByCode/MappersTests/ClassMapperTests/ trunk/nhibernate/src/NHibernate.Test/MappingByCode/MappersTests/ClassMapperTests/ClassMapperWithJoinPropertiesTest.cs Removed Paths: ------------- trunk/nhibernate/src/NHibernate.Test/MappingByCode/MappersTests/ClassMapperWithJoinPropertiesTest.cs Copied: trunk/nhibernate/src/NHibernate.Test/MappingByCode/MappersTests/ClassMapperTests/ClassMapperWithJoinPropertiesTest.cs (from rev 5698, trunk/nhibernate/src/NHibernate.Test/MappingByCode/MappersTests/ClassMapperWithJoinPropertiesTest.cs) =================================================================== --- trunk/nhibernate/src/NHibernate.Test/MappingByCode/MappersTests/ClassMapperTests/ClassMapperWithJoinPropertiesTest.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/MappingByCode/MappersTests/ClassMapperTests/ClassMapperWithJoinPropertiesTest.cs 2011-04-14 18:06:16 UTC (rev 5700) @@ -0,0 +1,89 @@ +using System.Linq; +using NHibernate.Cfg.MappingSchema; +using NHibernate.Mapping.ByCode; +using NHibernate.Mapping.ByCode.Impl; +using NUnit.Framework; +using SharpTestsEx; + +namespace NHibernate.Test.MappingByCode.MappersTests.ClassMapperTests +{ + public class ClassMapperWithJoinPropertiesTest + { + private class MyClass + { + public int Id { get; set; } + } + + [Test] + public void WhenDefineJoinThenAddJoinWithTableNameAndKey() + { + var mapdoc = new HbmMapping(); + var mapper = new ClassMapper(typeof(MyClass), mapdoc, For<MyClass>.Property(x=> x.Id)); + mapper.Join("MyTable",x => { }); + + var hbmClass = mapdoc.RootClasses[0]; + var hbmJoin = hbmClass.Joins.Single(); + hbmJoin.table.Should().Be("MyTable"); + hbmJoin.key.Should().Not.Be.Null(); + hbmJoin.key.column1.Should().Not.Be.Null(); + } + + [Test] + public void WhenDefineJoinThenCallJoinMapper() + { + var mapdoc = new HbmMapping(); + var mapper = new ClassMapper(typeof(MyClass), mapdoc, For<MyClass>.Property(x => x.Id)); + var called = false; + mapper.Join("MyTable", x => + { + x.Should().Not.Be.Null(); + called = true; + }); + + called.Should().Be.True(); + } + + //[Test] + //public void WhenDefineJoinTableNameAsTableOfRootThenThrows() + //{ + // We can't give support to this check. + // The name of the table of the root-class may change during the mapping process where the name of the joined table is immutable (or...perhaps what is really immutable is the Id used in the explicit mapping ;) ) + // We are using the name of the joined table as id for the splitted property group. I can't find another way to be 100% sure to re-use the same + // instance of JoinMapper when the Join method is used more than once. + // The case of "inconsistent" name should be checked by binders since the problem is the same using XML mappings + // + // var mapdoc = new HbmMapping(); + // var mapper = new ClassMapper(typeof(MyClass), mapdoc, For<MyClass>.Property(x => x.Id)); + // Executing.This(()=> mapper.Join("MyClass", x => { })).Should().Throw<MappingException>(); + //} + + [Test] + public void WhenDefineMoreJoinsThenTableNameShouldBeUnique() + { + var mapdoc = new HbmMapping(); + var mapper = new ClassMapper(typeof(MyClass), mapdoc, For<MyClass>.Property(x => x.Id)); + mapper.Join("T1", x => { }); + mapper.Join("T2",x => { }); + + var hbmClass = mapdoc.RootClasses[0]; + hbmClass.Joins.Should().Have.Count.EqualTo(2); + hbmClass.Joins.Select(x=> x.table).Should().Have.UniqueValues(); + } + + [Test] + public void WhenDefineMoreJoinsWithSameIdThenUseSameJoinMapperInstance() + { + var mapdoc = new HbmMapping(); + var mapper = new ClassMapper(typeof(MyClass), mapdoc, For<MyClass>.Property(x => x.Id)); + IJoinMapper firstCallInstance = null; + IJoinMapper secondCallInstance = null; + + mapper.Join("T1", x => firstCallInstance = x); + mapper.Join("T1", x => secondCallInstance = x); + + firstCallInstance.Should().Be.SameInstanceAs(secondCallInstance); + var hbmClass = mapdoc.RootClasses[0]; + hbmClass.Joins.Should().Have.Count.EqualTo(1); + } + } +} \ No newline at end of file Deleted: trunk/nhibernate/src/NHibernate.Test/MappingByCode/MappersTests/ClassMapperWithJoinPropertiesTest.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/MappingByCode/MappersTests/ClassMapperWithJoinPropertiesTest.cs 2011-04-14 17:39:19 UTC (rev 5699) +++ trunk/nhibernate/src/NHibernate.Test/MappingByCode/MappersTests/ClassMapperWithJoinPropertiesTest.cs 2011-04-14 18:06:16 UTC (rev 5700) @@ -1,89 +0,0 @@ -using System.Linq; -using NHibernate.Cfg.MappingSchema; -using NHibernate.Mapping.ByCode; -using NHibernate.Mapping.ByCode.Impl; -using NUnit.Framework; -using SharpTestsEx; - -namespace NHibernate.Test.MappingByCode.MappersTests -{ - public class ClassMapperWithJoinPropertiesTest - { - private class MyClass - { - public int Id { get; set; } - } - - [Test] - public void WhenDefineJoinThenAddJoinWithTableNameAndKey() - { - var mapdoc = new HbmMapping(); - var mapper = new ClassMapper(typeof(MyClass), mapdoc, For<MyClass>.Property(x=> x.Id)); - mapper.Join("MyTable",x => { }); - - var hbmClass = mapdoc.RootClasses[0]; - var hbmJoin = hbmClass.Joins.Single(); - hbmJoin.table.Should().Be("MyTable"); - hbmJoin.key.Should().Not.Be.Null(); - hbmJoin.key.column1.Should().Not.Be.Null(); - } - - [Test] - public void WhenDefineJoinThenCallJoinMapper() - { - var mapdoc = new HbmMapping(); - var mapper = new ClassMapper(typeof(MyClass), mapdoc, For<MyClass>.Property(x => x.Id)); - var called = false; - mapper.Join("MyTable", x => - { - x.Should().Not.Be.Null(); - called = true; - }); - - called.Should().Be.True(); - } - - //[Test] - //public void WhenDefineJoinTableNameAsTableOfRootThenThrows() - //{ - // We can't give support to this check. - // The name of the table of the root-class may change during the mapping process where the name of the joined table is immutable (or...perhaps what is really immutable is the Id used in the explicit mapping ;) ) - // We are using the name of the joined table as id for the splitted property group. I can't find another way to be 100% sure to re-use the same - // instance of JoinMapper when the Join method is used more than once. - // The case of "inconsistent" name should be checked by binders since the problem is the same using XML mappings - // - // var mapdoc = new HbmMapping(); - // var mapper = new ClassMapper(typeof(MyClass), mapdoc, For<MyClass>.Property(x => x.Id)); - // Executing.This(()=> mapper.Join("MyClass", x => { })).Should().Throw<MappingException>(); - //} - - [Test] - public void WhenDefineMoreJoinsThenTableNameShouldBeUnique() - { - var mapdoc = new HbmMapping(); - var mapper = new ClassMapper(typeof(MyClass), mapdoc, For<MyClass>.Property(x => x.Id)); - mapper.Join("T1", x => { }); - mapper.Join("T2",x => { }); - - var hbmClass = mapdoc.RootClasses[0]; - hbmClass.Joins.Should().Have.Count.EqualTo(2); - hbmClass.Joins.Select(x=> x.table).Should().Have.UniqueValues(); - } - - [Test] - public void WhenDefineMoreJoinsWithSameIdThenUseSameJoinMapperInstance() - { - var mapdoc = new HbmMapping(); - var mapper = new ClassMapper(typeof(MyClass), mapdoc, For<MyClass>.Property(x => x.Id)); - IJoinMapper firstCallInstance = null; - IJoinMapper secondCallInstance = null; - - mapper.Join("T1", x => firstCallInstance = x); - mapper.Join("T1", x => secondCallInstance = x); - - firstCallInstance.Should().Be.SameInstanceAs(secondCallInstance); - var hbmClass = mapdoc.RootClasses[0]; - hbmClass.Joins.Should().Have.Count.EqualTo(1); - } - } -} \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2011-04-14 17:39:19 UTC (rev 5699) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2011-04-14 18:06:16 UTC (rev 5700) @@ -539,7 +539,7 @@ <Compile Include="MappingByCode\ExpliticMappingTests\VersionTests.cs" /> <Compile Include="MappingByCode\For.cs" /> <Compile Include="MappingByCode\MappersTests\AbstractPropertyContainerMapperTest.cs" /> - <Compile Include="MappingByCode\MappersTests\ClassMapperWithJoinPropertiesTest.cs" /> + <Compile Include="MappingByCode\MappersTests\ClassMapperTests\ClassMapperWithJoinPropertiesTest.cs" /> <Compile Include="MappingByCode\MappersTests\CollectionIdMapperTests.cs" /> <Compile Include="MappingByCode\MappersTests\FakeUserCollectionType.cs" /> <Compile Include="MappingByCode\MappersTests\IdBagMapperTest.cs" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2011-04-14 17:39:25
|
Revision: 5699 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5699&view=rev Author: fabiomaulo Date: 2011-04-14 17:39:19 +0000 (Thu, 14 Apr 2011) Log Message: ----------- Fix NH-2652 Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Tool/hbm2ddl/SchemaMetadataUpdater.cs trunk/nhibernate/src/NHibernate.Test/Tools/hbm2ddl/SchemaMetadataUpdaterTest/SchemaMetadataUpdaterFixture.cs Modified: trunk/nhibernate/src/NHibernate/Tool/hbm2ddl/SchemaMetadataUpdater.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Tool/hbm2ddl/SchemaMetadataUpdater.cs 2011-04-13 23:07:40 UTC (rev 5698) +++ trunk/nhibernate/src/NHibernate/Tool/hbm2ddl/SchemaMetadataUpdater.cs 2011-04-14 17:39:19 UTC (rev 5699) @@ -19,7 +19,7 @@ public static void QuoteTableAndColumns(Configuration configuration) { - ISet<string> reservedDb = GetReservedWords(configuration.Properties); + ISet<string> reservedDb = GetReservedWords(configuration.GetDerivedProperties()); foreach (var cm in configuration.ClassMappings) { QuoteTable(cm.Table, reservedDb); Modified: trunk/nhibernate/src/NHibernate.Test/Tools/hbm2ddl/SchemaMetadataUpdaterTest/SchemaMetadataUpdaterFixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/Tools/hbm2ddl/SchemaMetadataUpdaterTest/SchemaMetadataUpdaterFixture.cs 2011-04-13 23:07:40 UTC (rev 5698) +++ trunk/nhibernate/src/NHibernate.Test/Tools/hbm2ddl/SchemaMetadataUpdaterTest/SchemaMetadataUpdaterFixture.cs 2011-04-14 17:39:19 UTC (rev 5699) @@ -163,5 +163,28 @@ new SchemaExport(configuration).Drop(false, false); } + [Test] + public void WhenConfiguredOnlyExplicitAutoQuote() + { + var configuration = TestConfigurationHelper.GetDefaultConfiguration(); + var configuredDialect = Dialect.Dialect.GetDialect(); + if(!configuredDialect.DefaultProperties.ContainsKey(Environment.ConnectionDriver)) + { + Assert.Ignore(GetType() + " does not apply to " + configuredDialect); + } + configuration.Properties.Remove(Environment.ConnectionDriver); + configuration.AddResource("NHibernate.Test.Tools.hbm2ddl.SchemaMetadataUpdaterTest.HeavyEntity.hbm.xml", + GetType().Assembly); + + SchemaMetadataUpdater.QuoteTableAndColumns(configuration); + + var cm = configuration.GetClassMapping(typeof(Order)); + Assert.That(cm.Table.IsQuoted); + var culs = new List<Column>(cm.Table.ColumnIterator); + Assert.That(GetColumnByName(culs, "From").IsQuoted); + Assert.That(GetColumnByName(culs, "And").IsQuoted); + Assert.That(GetColumnByName(culs, "Select").IsQuoted); + Assert.That(!GetColumnByName(culs, "Name").IsQuoted); + } } } \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2011-04-13 23:07:47
|
Revision: 5698 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5698&view=rev Author: fabiomaulo Date: 2011-04-13 23:07:40 +0000 (Wed, 13 Apr 2011) Log Message: ----------- Fixed issue when use event to map collection key Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Mapping/ByCode/ModelMapper.cs trunk/nhibernate/src/NHibernate.Test/MappingByCode/MixAutomapping/BagCollectionTests.cs Modified: trunk/nhibernate/src/NHibernate/Mapping/ByCode/ModelMapper.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Mapping/ByCode/ModelMapper.cs 2011-04-13 22:04:27 UTC (rev 5697) +++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/ModelMapper.cs 2011-04-13 23:07:40 UTC (rev 5698) @@ -1052,9 +1052,9 @@ ICollectionElementRelationMapper cert = DetermineCollectionElementRelationType(member, propertyPath, collectionElementType); propertiesContainer.Bag(member, collectionPropertiesMapper => { - InvokeBeforeMapBag(propertyPath, collectionPropertiesMapper); cert.MapCollectionProperties(collectionPropertiesMapper); - ForEachMemberPath(member, propertyPath, pp => customizerHolder.InvokeCustomizers(pp, collectionPropertiesMapper)); + InvokeBeforeMapBag(propertyPath, collectionPropertiesMapper); + ForEachMemberPath(member, propertyPath, pp => customizerHolder.InvokeCustomizers(pp, collectionPropertiesMapper)); InvokeAfterMapBag(propertyPath, collectionPropertiesMapper); }, cert.Map); } @@ -1066,9 +1066,9 @@ ICollectionElementRelationMapper cert = DetermineCollectionElementRelationType(member, propertyPath, collectionElementType); propertiesContainer.List(member, collectionPropertiesMapper => { - InvokeBeforeMapList(propertyPath, collectionPropertiesMapper); cert.MapCollectionProperties(collectionPropertiesMapper); - ForEachMemberPath(member, propertyPath, pp => customizerHolder.InvokeCustomizers(pp, collectionPropertiesMapper)); + InvokeBeforeMapList(propertyPath, collectionPropertiesMapper); + ForEachMemberPath(member, propertyPath, pp => customizerHolder.InvokeCustomizers(pp, collectionPropertiesMapper)); InvokeAfterMapList(propertyPath, collectionPropertiesMapper); }, cert.Map); } @@ -1089,9 +1089,9 @@ propertiesContainer.Map(member, collectionPropertiesMapper => { - InvokeBeforeMapMap(propertyPath, collectionPropertiesMapper); cert.MapCollectionProperties(collectionPropertiesMapper); - ForEachMemberPath(member, propertyPath, pp => customizerHolder.InvokeCustomizers(pp, collectionPropertiesMapper)); + InvokeBeforeMapMap(propertyPath, collectionPropertiesMapper); + ForEachMemberPath(member, propertyPath, pp => customizerHolder.InvokeCustomizers(pp, collectionPropertiesMapper)); InvokeAfterMapMap(propertyPath, collectionPropertiesMapper); }, mkrm.Map, cert.Map); } @@ -1103,9 +1103,9 @@ ICollectionElementRelationMapper cert = DetermineCollectionElementRelationType(member, propertyPath, collectionElementType); propertiesContainer.Set(member, collectionPropertiesMapper => { - InvokeBeforeMapSet(propertyPath, collectionPropertiesMapper); cert.MapCollectionProperties(collectionPropertiesMapper); - ForEachMemberPath(member, propertyPath, pp => customizerHolder.InvokeCustomizers(pp, collectionPropertiesMapper)); + InvokeBeforeMapSet(propertyPath, collectionPropertiesMapper); + ForEachMemberPath(member, propertyPath, pp => customizerHolder.InvokeCustomizers(pp, collectionPropertiesMapper)); InvokeAfterMapSet(propertyPath, collectionPropertiesMapper); }, cert.Map); } @@ -1121,8 +1121,8 @@ } propertiesContainer.IdBag(member, collectionPropertiesMapper => { + cert.MapCollectionProperties(collectionPropertiesMapper); InvokeBeforeMapIdBag(propertyPath, collectionPropertiesMapper); - cert.MapCollectionProperties(collectionPropertiesMapper); ForEachMemberPath(member, propertyPath, pp => customizerHolder.InvokeCustomizers(pp, collectionPropertiesMapper)); InvokeAfterMapIdBag(propertyPath, collectionPropertiesMapper); }, cert.Map); Modified: trunk/nhibernate/src/NHibernate.Test/MappingByCode/MixAutomapping/BagCollectionTests.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/MappingByCode/MixAutomapping/BagCollectionTests.cs 2011-04-13 22:04:27 UTC (rev 5697) +++ trunk/nhibernate/src/NHibernate.Test/MappingByCode/MixAutomapping/BagCollectionTests.cs 2011-04-13 23:07:40 UTC (rev 5698) @@ -1,5 +1,7 @@ using System.Collections.Generic; +using System.Linq; using System.Reflection; +using NHibernate.Cfg.MappingSchema; using NHibernate.Mapping.ByCode; using NUnit.Framework; using SharpTestsEx; @@ -22,6 +24,17 @@ public string Simple { get; set; } } + private class Parent + { + public int Id { get; set; } + public IEnumerable<Child> NickNames { get; set; } + } + private class Child + { + public int Id { get; set; } + public Parent AParent { get; set; } + } + [Test] public void MatchWithEnumerableProperty() { @@ -71,5 +84,17 @@ inspector.IsBag(mi).Should().Be.False(); } + + [Test] + public void WhenSetKeyThroughEventThenUseEvent() + { + var autoinspector = new SimpleModelInspector(); + var mapper = new ModelMapper(autoinspector); + mapper.BeforeMapBag += (insp, prop, map) => map.Key(km => km.Column(prop.GetContainerEntity(insp).Name + "Id")); + + var hbmMapping = mapper.CompileMappingFor(new[] {typeof(Parent)}); + var hbmBag = hbmMapping.RootClasses[0].Properties.OfType<HbmBag>().Single(); + hbmBag.Key.Columns.Single().name.Should().Be("ParentId"); + } } } \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2011-04-13 22:04:33
|
Revision: 5697 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5697&view=rev Author: fabiomaulo Date: 2011-04-13 22:04:27 +0000 (Wed, 13 Apr 2011) Log Message: ----------- Fixed bug when version declared on base entity Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Mapping/ByCode/ModelMapper.cs trunk/nhibernate/src/NHibernate.Test/MappingByCode/ConventionModelMapperTests/VersionOnBaseClassIntegrationTest.cs Modified: trunk/nhibernate/src/NHibernate/Mapping/ByCode/ModelMapper.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Mapping/ByCode/ModelMapper.cs 2011-04-13 21:57:13 UTC (rev 5696) +++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/ModelMapper.cs 2011-04-13 22:04:27 UTC (rev 5697) @@ -743,7 +743,7 @@ }); } var splitGroups = modelInspector.GetPropertiesSplits(type); - var propertiesToMap = persistentProperties.Where(mi => !modelInspector.IsVersion(mi)).Except(naturalIdPropeties).ToList(); + var propertiesToMap = persistentProperties.Where(mi => !modelInspector.IsVersion(mi) && !modelInspector.IsVersion(mi.GetMemberFromDeclaringType())).Except(naturalIdPropeties).ToList(); var propertiesInSplits = new HashSet<MemberInfo>(); foreach (var splitGroup in splitGroups) { Modified: trunk/nhibernate/src/NHibernate.Test/MappingByCode/ConventionModelMapperTests/VersionOnBaseClassIntegrationTest.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/MappingByCode/ConventionModelMapperTests/VersionOnBaseClassIntegrationTest.cs 2011-04-13 21:57:13 UTC (rev 5696) +++ trunk/nhibernate/src/NHibernate.Test/MappingByCode/ConventionModelMapperTests/VersionOnBaseClassIntegrationTest.cs 2011-04-13 22:04:27 UTC (rev 5697) @@ -36,5 +36,28 @@ hbmVersion.Should().Not.Be.Null(); hbmVersion.name.Should().Be("Version"); } + + [Test] + public void WhenVersionFromBaseEntityThenShouldntMapVersionAsProperty() + { + var mapper = new ConventionModelMapper(); + var baseEntityType = typeof(BaseEntity); + mapper.IsEntity((t, declared) => baseEntityType.IsAssignableFrom(t) && baseEntityType != t && !t.IsInterface); + mapper.IsRootEntity((t, declared) => baseEntityType.Equals(t.BaseType)); + mapper.Class<BaseEntity>( + map => + { + map.Id(x => x.Id, idmap => { }); + map.Version(x => x.Version, vm => { }); + }); + var hbmMapping = mapper.CompileMappingFor(new[] { typeof(Person) }); + + var hbmClass = hbmMapping.RootClasses[0]; + var hbmVersion = hbmClass.Version; + hbmVersion.Should().Not.Be.Null(); + hbmVersion.name.Should().Be("Version"); + + hbmClass.Properties.Should("because one is the POID and the other is the version").Be.Empty(); + } } } \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2011-04-13 21:57:20
|
Revision: 5696 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5696&view=rev Author: fabiomaulo Date: 2011-04-13 21:57:13 +0000 (Wed, 13 Apr 2011) Log Message: ----------- Added passing tests Modified Paths: -------------- trunk/nhibernate/src/NHibernate.Test/MappingByCode/ExpliticMappingTests/VersionTests.cs trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate.Test/MappingByCode/ConventionModelMapperTests/VersionOnBaseClassIntegrationTest.cs trunk/nhibernate/src/NHibernate.Test/MappingByCode/MixAutomapping/InheritedVersionTest.cs Added: trunk/nhibernate/src/NHibernate.Test/MappingByCode/ConventionModelMapperTests/VersionOnBaseClassIntegrationTest.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/MappingByCode/ConventionModelMapperTests/VersionOnBaseClassIntegrationTest.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/MappingByCode/ConventionModelMapperTests/VersionOnBaseClassIntegrationTest.cs 2011-04-13 21:57:13 UTC (rev 5696) @@ -0,0 +1,40 @@ +using NHibernate.Mapping.ByCode; +using NUnit.Framework; +using SharpTestsEx; + +namespace NHibernate.Test.MappingByCode.ConventionModelMapperTests +{ + public class VersionOnBaseClassIntegrationTest + { + private class BaseEntity + { + public int Id { get; set; } + public int Version { get; set; } + } + + private class Person : BaseEntity + { + } + + [Test] + public void WhenPropertyVersionFromBaseEntityThenFindItAsVersion() + { + var mapper = new ConventionModelMapper(); + var baseEntityType = typeof(BaseEntity); + mapper.IsEntity((t, declared) => baseEntityType.IsAssignableFrom(t) && baseEntityType != t && !t.IsInterface); + mapper.IsRootEntity((t, declared) => baseEntityType.Equals(t.BaseType)); + mapper.Class<BaseEntity>( + map => + { + map.Id(x => x.Id, idmap => { }); + map.Version(x => x.Version, vm => { }); + }); + var hbmMapping = mapper.CompileMappingFor(new[] { typeof(Person) }); + + var hbmClass = hbmMapping.RootClasses[0]; + var hbmVersion = hbmClass.Version; + hbmVersion.Should().Not.Be.Null(); + hbmVersion.name.Should().Be("Version"); + } + } +} \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate.Test/MappingByCode/ExpliticMappingTests/VersionTests.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/MappingByCode/ExpliticMappingTests/VersionTests.cs 2011-04-13 20:35:38 UTC (rev 5695) +++ trunk/nhibernate/src/NHibernate.Test/MappingByCode/ExpliticMappingTests/VersionTests.cs 2011-04-13 21:57:13 UTC (rev 5696) @@ -11,9 +11,12 @@ public int Id { get; set; } public int Version { get; set; } } + private class MyRoot: MyClass + { + } [Test] - public void WhenPropertyUsedAsPoidThenRegister() + public void WhenPropertyUsedAsVersionThenRegister() { var inspector = new ExplicitlyDeclaredModel(); var mapper = new ModelMapper(inspector); @@ -26,5 +29,20 @@ inspector.IsVersion(For<MyClass>.Property(x => x.Version)).Should().Be.True(); } + + [Test] + public void WhenPropertyVersionFromBaseEntityThenFindItAsVersion() + { + var inspector = new ExplicitlyDeclaredModel(); + var mapper = new ModelMapper(inspector); + mapper.Class<MyClass>( + map => + { + map.Id(x => x.Id, idmap => { }); + map.Version(x => x.Version, vm => { }); + }); + + inspector.IsVersion(For<MyRoot>.Property(x => x.Version)).Should().Be.True(); + } } } \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/MappingByCode/MixAutomapping/InheritedVersionTest.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/MappingByCode/MixAutomapping/InheritedVersionTest.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/MappingByCode/MixAutomapping/InheritedVersionTest.cs 2011-04-13 21:57:13 UTC (rev 5696) @@ -0,0 +1,34 @@ +using NHibernate.Mapping.ByCode; +using NUnit.Framework; +using SharpTestsEx; + +namespace NHibernate.Test.MappingByCode.MixAutomapping +{ + public class InheritedVersionTest + { + private class BaseEntity + { + public int Id { get; set; } + public int Version { get; set; } + } + + private class Person : BaseEntity + { + } + + [Test] + public void WhenPropertyVersionFromBaseEntityThenFindItAsVersion() + { + var inspector = (IModelInspector)new SimpleModelInspector(); + var mapper = new ModelMapper(inspector); + mapper.Class<BaseEntity>( + map => + { + map.Id(x => x.Id, idmap => { }); + map.Version(x => x.Version, vm => { }); + }); + + inspector.IsVersion(For<Person>.Property(x => x.Version)).Should().Be.True(); + } + } +} \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2011-04-13 20:35:38 UTC (rev 5695) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2011-04-13 21:57:13 UTC (rev 5696) @@ -513,6 +513,7 @@ <Compile Include="Logging\LoggerProviderTest.cs" /> <Compile Include="MappingByCode\ConventionModelMapperTests\PropertyToFieldAccessorTest.cs" /> <Compile Include="MappingByCode\ConventionModelMapperTests\SafePoidTests.cs" /> + <Compile Include="MappingByCode\ConventionModelMapperTests\VersionOnBaseClassIntegrationTest.cs" /> <Compile Include="MappingByCode\ExpliticMappingTests\BagOfNestedComponentsWithParentTest.cs" /> <Compile Include="MappingByCode\ExpliticMappingTests\ClassWithComponentsTest.cs" /> <Compile Include="MappingByCode\ExpliticMappingTests\ConformistMappingRegistrationTests\ClassMappingRegistrationTest.cs" /> @@ -550,6 +551,7 @@ <Compile Include="MappingByCode\MixAutomapping\DefaultClassHierarchyRepresentationTests.cs" /> <Compile Include="MappingByCode\MixAutomapping\DictionaryCollectionTests.cs" /> <Compile Include="MappingByCode\MixAutomapping\EntityTests.cs" /> + <Compile Include="MappingByCode\MixAutomapping\InheritedVersionTest.cs" /> <Compile Include="MappingByCode\MixAutomapping\ManyToOneTest.cs" /> <Compile Include="MappingByCode\MixAutomapping\OneToManyTests.cs" /> <Compile Include="MappingByCode\MixAutomapping\PoidTests.cs" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2011-04-13 20:35:44
|
Revision: 5695 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5695&view=rev Author: fabiomaulo Date: 2011-04-13 20:35:38 +0000 (Wed, 13 Apr 2011) Log Message: ----------- ConventionModelMapper safe accessors Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Mapping/ByCode/ConventionModelMapper.cs Modified: trunk/nhibernate/src/NHibernate/Mapping/ByCode/ConventionModelMapper.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Mapping/ByCode/ConventionModelMapper.cs 2011-04-13 20:19:46 UTC (rev 5694) +++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/ConventionModelMapper.cs 2011-04-13 20:35:38 UTC (rev 5695) @@ -19,18 +19,81 @@ BeforeMapClass += NoSetterPoidToField; BeforeMapProperty += MemberToFieldAccessor; + BeforeMapProperty += MemberNoSetterToField; + BeforeMapProperty += MemberReadOnlyAccessor; + BeforeMapBag += MemberToFieldAccessor; BeforeMapSet += MemberToFieldAccessor; BeforeMapMap += MemberToFieldAccessor; BeforeMapList += MemberToFieldAccessor; + BeforeMapBag += MemberNoSetterToField; + BeforeMapSet += MemberNoSetterToField; + BeforeMapMap += MemberNoSetterToField; + BeforeMapList += MemberNoSetterToField; + BeforeMapBag += MemberReadOnlyAccessor; + BeforeMapSet += MemberReadOnlyAccessor; + BeforeMapMap += MemberReadOnlyAccessor; + BeforeMapList += MemberReadOnlyAccessor; BeforeMapManyToOne += MemberToFieldAccessor; BeforeMapOneToOne += MemberToFieldAccessor; BeforeMapAny += MemberToFieldAccessor; + BeforeMapManyToOne += MemberNoSetterToField; + BeforeMapOneToOne += MemberNoSetterToField; + BeforeMapAny += MemberNoSetterToField; + BeforeMapManyToOne += MemberReadOnlyAccessor; + BeforeMapOneToOne += MemberReadOnlyAccessor; + BeforeMapAny += MemberReadOnlyAccessor; } - void MemberToFieldAccessor(IModelInspector modelInspector, PropertyPath member, IAccessorPropertyMapper propertyCustomizer) + protected virtual void MemberReadOnlyAccessor(IModelInspector modelInspector, PropertyPath member, IAccessorPropertyMapper propertyCustomizer) { + if (MatchReadOnlyProperty(member.LocalMember)) + { + propertyCustomizer.Access(Accessor.ReadOnly); + } + } + + protected bool MatchReadOnlyProperty(MemberInfo subject) + { + var property = subject as PropertyInfo; + if (property == null) + { + return false; + } + if (CanReadCantWriteInsideType(property) || CanReadCantWriteInBaseType(property)) + { + return PropertyToField.GetBackFieldInfo(property) == null; + } + return false; + } + + private bool CanReadCantWriteInsideType(PropertyInfo property) + { + return !property.CanWrite && property.CanRead && property.DeclaringType == property.ReflectedType; + } + + private bool CanReadCantWriteInBaseType(PropertyInfo property) + { + if (property.DeclaringType == property.ReflectedType) + { + return false; + } + var rfprop = property.DeclaringType.GetProperties(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance + | BindingFlags.DeclaredOnly).SingleOrDefault(pi => pi.Name == property.Name); + return rfprop != null && !rfprop.CanWrite && rfprop.CanRead; + } + + protected virtual void MemberNoSetterToField(IModelInspector modelInspector, PropertyPath member, IAccessorPropertyMapper propertyCustomizer) + { + if (MatchNoSetterProperty(member.LocalMember)) + { + propertyCustomizer.Access(Accessor.NoSetter); + } + } + + protected virtual void MemberToFieldAccessor(IModelInspector modelInspector, PropertyPath member, IAccessorPropertyMapper propertyCustomizer) + { if (MatchPropertyToField(member.LocalMember)) { propertyCustomizer.Access(Accessor.Field); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ric...@us...> - 2011-04-13 20:19:52
|
Revision: 5694 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5694&view=rev Author: ricbrown Date: 2011-04-13 20:19:46 +0000 (Wed, 13 Apr 2011) Log Message: ----------- Attempt to stop Firebird build hanging. Modified Paths: -------------- trunk/nhibernate/src/NHibernate.Test/Hql/Ast/LimitClauseFixture.cs Modified: trunk/nhibernate/src/NHibernate.Test/Hql/Ast/LimitClauseFixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/Hql/Ast/LimitClauseFixture.cs 2011-04-13 20:16:57 UTC (rev 5693) +++ trunk/nhibernate/src/NHibernate.Test/Hql/Ast/LimitClauseFixture.cs 2011-04-13 20:19:46 UTC (rev 5694) @@ -35,7 +35,7 @@ { ISession session = OpenSession(); ITransaction txn = session.BeginTransaction(); - session.CreateQuery("delete Human").ExecuteUpdate(); + session.Delete("from Animal"); txn.Commit(); session.Close(); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2011-04-13 20:17:03
|
Revision: 5693 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5693&view=rev Author: fabiomaulo Date: 2011-04-13 20:16:57 +0000 (Wed, 13 Apr 2011) Log Message: ----------- ConventionModelMapper safe property accessor Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Mapping/ByCode/ConventionModelMapper.cs trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate.Test/MappingByCode/ConventionModelMapperTests/PropertyToFieldAccessorTest.cs Modified: trunk/nhibernate/src/NHibernate/Mapping/ByCode/ConventionModelMapper.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Mapping/ByCode/ConventionModelMapper.cs 2011-04-13 19:03:48 UTC (rev 5692) +++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/ConventionModelMapper.cs 2011-04-13 20:16:57 UTC (rev 5693) @@ -17,8 +17,42 @@ { BeforeMapClass += NoPoidGuid; BeforeMapClass += NoSetterPoidToField; + + BeforeMapProperty += MemberToFieldAccessor; + BeforeMapBag += MemberToFieldAccessor; + BeforeMapSet += MemberToFieldAccessor; + BeforeMapMap += MemberToFieldAccessor; + BeforeMapList += MemberToFieldAccessor; + + BeforeMapManyToOne += MemberToFieldAccessor; + BeforeMapOneToOne += MemberToFieldAccessor; + BeforeMapAny += MemberToFieldAccessor; } + void MemberToFieldAccessor(IModelInspector modelInspector, PropertyPath member, IAccessorPropertyMapper propertyCustomizer) + { + if (MatchPropertyToField(member.LocalMember)) + { + propertyCustomizer.Access(Accessor.Field); + } + } + + protected bool MatchPropertyToField(MemberInfo subject) + { + var property = subject as PropertyInfo; + if (property == null) + { + return false; + } + var fieldInfo = PropertyToField.GetBackFieldInfo(property); + if (fieldInfo != null) + { + return fieldInfo.FieldType != property.PropertyType; + } + + return false; + } + protected virtual void NoSetterPoidToField(IModelInspector modelInspector, System.Type type, IClassAttributesMapper classCustomizer) { MemberInfo poidPropertyOrField = MembersProvider.GetEntityMembersForPoid(type).FirstOrDefault(modelInspector.IsPersistentId); @@ -28,7 +62,7 @@ } } - public bool MatchNoSetterProperty(MemberInfo subject) + protected bool MatchNoSetterProperty(MemberInfo subject) { var property = subject as PropertyInfo; if (property == null || property.CanWrite || !property.CanRead) Added: trunk/nhibernate/src/NHibernate.Test/MappingByCode/ConventionModelMapperTests/PropertyToFieldAccessorTest.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/MappingByCode/ConventionModelMapperTests/PropertyToFieldAccessorTest.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/MappingByCode/ConventionModelMapperTests/PropertyToFieldAccessorTest.cs 2011-04-13 20:16:57 UTC (rev 5693) @@ -0,0 +1,131 @@ +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using NHibernate.Mapping.ByCode; +using NUnit.Framework; +using SharpTestsEx; + +namespace NHibernate.Test.MappingByCode.ConventionModelMapperTests +{ + public class PropertyToFieldAccessorTest + { + private class MyClass + { + public int Id { get; set; } + private string aField; + public int AProp { get; set; } + + private ICollection<int> withDifferentBackField; + public IEnumerable<int> WithDifferentBackField + { + get { return withDifferentBackField; } + set { withDifferentBackField = value as ICollection<int>; } + } + + private string readOnlyWithSameBackField; + public string ReadOnlyWithSameBackField + { + get { return readOnlyWithSameBackField; } + } + + public string PropertyWithoutField + { + get { return ""; } + } + + private string sameTypeOfBackField; + public string SameTypeOfBackField + { + get { return sameTypeOfBackField; } + set { sameTypeOfBackField = value; } + } + + private int setOnlyProperty; + public int SetOnlyProperty + { + set { setOnlyProperty = value; } + } + } + + [Test] + public void WhenFieldAccessToField() + { + var member = typeof(MyClass).GetField("aField",BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.DeclaredOnly); + var mapper = new ConventionModelMapper(); + mapper.Class<MyClass>(mc => mc.Property(member, x => { })); + var hbmMapping = mapper.CompileMappingFor(new[] { typeof(MyClass) }); + + var hbmClass = hbmMapping.RootClasses[0]; + var hbmProperty = hbmClass.Properties.Single(x => x.Name == "aField"); + hbmProperty.Access.Should().Be("field"); + } + + [Test] + public void WhenAutoPropertyNoAccessor() + { + var mapper = new ConventionModelMapper(); + var hbmMapping = mapper.CompileMappingFor(new[] { typeof(MyClass) }); + + var hbmClass = hbmMapping.RootClasses[0]; + var hbmProperty = hbmClass.Properties.Single(x => x.Name == "AProp"); + hbmProperty.Access.Should().Be.NullOrEmpty(); + } + + [Test] + public void WhenPropertyWithSameBackFieldNoMatch() + { + var mapper = new ConventionModelMapper(); + var hbmMapping = mapper.CompileMappingFor(new[] { typeof(MyClass) }); + + var hbmClass = hbmMapping.RootClasses[0]; + var hbmProperty = hbmClass.Properties.Single(x => x.Name == "SameTypeOfBackField"); + hbmProperty.Access.Should().Be.NullOrEmpty(); + } + + [Test] + public void WhenReadOnlyPropertyWithSameBackFieldNoMatch() + { + var mapper = new ConventionModelMapper(); + var hbmMapping = mapper.CompileMappingFor(new[] { typeof(MyClass) }); + + var hbmClass = hbmMapping.RootClasses[0]; + var hbmProperty = hbmClass.Properties.Single(x => x.Name == "ReadOnlyWithSameBackField"); + hbmProperty.Access.Should().Not.Contain("field"); + } + + [Test] + public void WhenPropertyWithoutFieldNoMatch() + { + var mapper = new ConventionModelMapper(); + mapper.Class<MyClass>(mc => mc.Property(x => x.PropertyWithoutField)); + + var hbmMapping = mapper.CompileMappingFor(new[] {typeof (MyClass)}); + + var hbmClass = hbmMapping.RootClasses[0]; + var hbmProperty = hbmClass.Properties.Single(x => x.Name == "PropertyWithoutField"); + hbmProperty.Access.Should().Not.Contain("field"); + } + + [Test] + public void WhenPropertyWithDifferentBackFieldMatch() + { + var mapper = new ConventionModelMapper(); + var hbmMapping = mapper.CompileMappingFor(new[] { typeof(MyClass) }); + + var hbmClass = hbmMapping.RootClasses[0]; + var hbmProperty = hbmClass.Properties.Single(x => x.Name == "WithDifferentBackField"); + hbmProperty.Access.Should().Contain("field"); + } + + [Test] + public void WhenSetOnlyPropertyNoMatch() + { + var mapper = new ConventionModelMapper(); + var hbmMapping = mapper.CompileMappingFor(new[] { typeof(MyClass) }); + + var hbmClass = hbmMapping.RootClasses[0]; + var hbmProperty = hbmClass.Properties.Single(x => x.Name == "SetOnlyProperty"); + hbmProperty.Access.Should().Not.Contain("field"); + } + } +} \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2011-04-13 19:03:48 UTC (rev 5692) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2011-04-13 20:16:57 UTC (rev 5693) @@ -511,6 +511,7 @@ <Compile Include="Linq\ByMethod\SumTests.cs" /> <Compile Include="Logging\Log4NetLoggerTest.cs" /> <Compile Include="Logging\LoggerProviderTest.cs" /> + <Compile Include="MappingByCode\ConventionModelMapperTests\PropertyToFieldAccessorTest.cs" /> <Compile Include="MappingByCode\ConventionModelMapperTests\SafePoidTests.cs" /> <Compile Include="MappingByCode\ExpliticMappingTests\BagOfNestedComponentsWithParentTest.cs" /> <Compile Include="MappingByCode\ExpliticMappingTests\ClassWithComponentsTest.cs" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2011-04-13 19:03:54
|
Revision: 5692 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5692&view=rev Author: fabiomaulo Date: 2011-04-13 19:03:48 +0000 (Wed, 13 Apr 2011) Log Message: ----------- ConventionModelMapper safe Poid Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Mapping/ByCode/ConventionModelMapper.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/ModelMapper.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/PropertyToField.cs trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate.Test/MappingByCode/ConventionModelMapperTests/SafePoidTests.cs Modified: trunk/nhibernate/src/NHibernate/Mapping/ByCode/ConventionModelMapper.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Mapping/ByCode/ConventionModelMapper.cs 2011-04-13 18:16:39 UTC (rev 5691) +++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/ConventionModelMapper.cs 2011-04-13 19:03:48 UTC (rev 5692) @@ -15,8 +15,45 @@ protected virtual void AppendDefaultEvents() { + BeforeMapClass += NoPoidGuid; + BeforeMapClass += NoSetterPoidToField; } + protected virtual void NoSetterPoidToField(IModelInspector modelInspector, System.Type type, IClassAttributesMapper classCustomizer) + { + MemberInfo poidPropertyOrField = MembersProvider.GetEntityMembersForPoid(type).FirstOrDefault(modelInspector.IsPersistentId); + if(MatchNoSetterProperty(poidPropertyOrField)) + { + classCustomizer.Id(idm=> idm.Access(Accessor.NoSetter)); + } + } + + public bool MatchNoSetterProperty(MemberInfo subject) + { + var property = subject as PropertyInfo; + if (property == null || property.CanWrite || !property.CanRead) + { + return false; + } + var fieldInfo = PropertyToField.GetBackFieldInfo(property); + if (fieldInfo != null) + { + return fieldInfo.FieldType == property.PropertyType; + } + + return false; + } + + protected virtual void NoPoidGuid(IModelInspector modelInspector, System.Type type, IClassAttributesMapper classCustomizer) + { + MemberInfo poidPropertyOrField = MembersProvider.GetEntityMembersForPoid(type).FirstOrDefault(mi => modelInspector.IsPersistentId(mi)); + if (!ReferenceEquals(null, poidPropertyOrField)) + { + return; + } + classCustomizer.Id(null, idm=> idm.Generator(Generators.Guid)); + } + protected SimpleModelInspector SimpleModelInspector { get { return (SimpleModelInspector) base.ModelInspector; } Modified: trunk/nhibernate/src/NHibernate/Mapping/ByCode/ModelMapper.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Mapping/ByCode/ModelMapper.cs 2011-04-13 18:16:39 UTC (rev 5691) +++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/ModelMapper.cs 2011-04-13 19:03:48 UTC (rev 5692) @@ -496,6 +496,11 @@ get { return modelInspector; } } + protected ICandidatePersistentMembersProvider MembersProvider + { + get { return membersProvider; } + } + public void Class<TRootEntity>(Action<IClassMapper<TRootEntity>> customizeAction) where TRootEntity : class { var customizer = new ClassCustomizer<TRootEntity>(explicitDeclarationsHolder, customizerHolder); Modified: trunk/nhibernate/src/NHibernate/Mapping/ByCode/PropertyToField.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Mapping/ByCode/PropertyToField.cs 2011-04-13 18:16:39 UTC (rev 5691) +++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/PropertyToField.cs 2011-04-13 19:03:48 UTC (rev 5692) @@ -1,4 +1,6 @@ using System.Collections.Generic; +using System.Linq; +using System.Reflection; using NHibernate.Properties; namespace NHibernate.Mapping.ByCode @@ -28,5 +30,14 @@ return FieldNamningStrategies; } } + + public static FieldInfo GetBackFieldInfo(PropertyInfo subject) + { + const BindingFlags defaultBinding = BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.DeclaredOnly; + return (from s in FieldNamningStrategies.Values + let field = subject.DeclaringType.GetField(s.GetFieldName(subject.Name), defaultBinding) + where field != null + select field).FirstOrDefault(); + } } } \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/MappingByCode/ConventionModelMapperTests/SafePoidTests.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/MappingByCode/ConventionModelMapperTests/SafePoidTests.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/MappingByCode/ConventionModelMapperTests/SafePoidTests.cs 2011-04-13 19:03:48 UTC (rev 5692) @@ -0,0 +1,65 @@ +using NHibernate.Mapping.ByCode; +using NHibernate.Mapping.ByCode.Impl; +using NUnit.Framework; +using SharpTestsEx; + +namespace NHibernate.Test.MappingByCode.ConventionModelMapperTests +{ + public class SafePoidTests + { + private class MyClassWithoutPoid + { + + } + + private class MyClass + { + private int _id; + public int Id + { + get { return _id; } + } + } + + [Test] + public void WhenClassWithoutPoidNorGeeneratorThenApplyGuid() + { + var mapper = new ConventionModelMapper(); + mapper.Class<MyClassWithoutPoid>(x => { }); + var hbmMapping = mapper.CompileMappingFor(new[] { typeof(MyClassWithoutPoid) }); + + var hbmClass = hbmMapping.RootClasses[0]; + var hbmId = hbmClass.Id; + hbmId.Should().Not.Be.Null(); + hbmId.generator.Should().Not.Be.Null(); + hbmId.generator.@class.Should().Be("guid"); + hbmId.type1.Should().Be("Guid"); + } + + [Test] + public void WhenClassWithoutPoidWithGeneratorThenApplyDefinedGenerator() + { + var mapper = new ConventionModelMapper(); + mapper.Class<MyClassWithoutPoid>(x => x.Id(null, idm=> idm.Generator(Generators.Native))); + var hbmMapping = mapper.CompileMappingFor(new[] { typeof(MyClassWithoutPoid) }); + + var hbmClass = hbmMapping.RootClasses[0]; + var hbmId = hbmClass.Id; + hbmId.Should().Not.Be.Null(); + hbmId.generator.Should().Not.Be.Null(); + hbmId.generator.@class.Should().Be("native"); + hbmId.type1.Should().Be(Generators.Native.DefaultReturnType.GetNhTypeName()); + } + + [Test] + public void WhenPoidNoSetterThenApplyNosetter() + { + var mapper = new ConventionModelMapper(); + mapper.Class<MyClass>(x => x.Id(mc=> mc.Id)); + var hbmMapping = mapper.CompileMappingFor(new[] { typeof(MyClass) }); + + var hbmClass = hbmMapping.RootClasses[0]; + hbmClass.Id.access.Should().Be("nosetter.camelcase-underscore"); + } + } +} \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2011-04-13 18:16:39 UTC (rev 5691) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2011-04-13 19:03:48 UTC (rev 5692) @@ -511,6 +511,7 @@ <Compile Include="Linq\ByMethod\SumTests.cs" /> <Compile Include="Logging\Log4NetLoggerTest.cs" /> <Compile Include="Logging\LoggerProviderTest.cs" /> + <Compile Include="MappingByCode\ConventionModelMapperTests\SafePoidTests.cs" /> <Compile Include="MappingByCode\ExpliticMappingTests\BagOfNestedComponentsWithParentTest.cs" /> <Compile Include="MappingByCode\ExpliticMappingTests\ClassWithComponentsTest.cs" /> <Compile Include="MappingByCode\ExpliticMappingTests\ConformistMappingRegistrationTests\ClassMappingRegistrationTest.cs" /> @@ -2976,7 +2977,6 @@ <EmbeddedResource Include="DynamicEntity\Tuplizer\Customer.hbm.xml" /> </ItemGroup> <ItemGroup> - <Folder Include="MappingByCode\ConventionModelMapperTests\" /> <Folder Include="Properties\" /> </ItemGroup> <ItemGroup> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2011-04-13 18:16:47
|
Revision: 5691 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5691&view=rev Author: fabiomaulo Date: 2011-04-13 18:16:39 +0000 (Wed, 13 Apr 2011) Log Message: ----------- Minor Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/IdMapper.cs trunk/nhibernate/src/NHibernate.Test/MappingByCode/ExpliticMappingTests/BasicMappingOfSimpleClass.cs Modified: trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/IdMapper.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/IdMapper.cs 2011-04-13 18:03:13 UTC (rev 5690) +++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/IdMapper.cs 2011-04-13 18:16:39 UTC (rev 5691) @@ -26,6 +26,7 @@ } else { + hbmId.type1 = typeof(int).GetNhTypeName(); accessorMapper = new NoMemberPropertyMapper(); } } Modified: trunk/nhibernate/src/NHibernate.Test/MappingByCode/ExpliticMappingTests/BasicMappingOfSimpleClass.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/MappingByCode/ExpliticMappingTests/BasicMappingOfSimpleClass.cs 2011-04-13 18:03:13 UTC (rev 5690) +++ trunk/nhibernate/src/NHibernate.Test/MappingByCode/ExpliticMappingTests/BasicMappingOfSimpleClass.cs 2011-04-13 18:16:39 UTC (rev 5691) @@ -51,6 +51,23 @@ } [Test] + public void WhenMapClassWithoutIdAndWithoutGeneratorThenTypeShouldHaveValue() + { + var mapper = new ModelMapper(); + mapper.Class<MyClass>(ca => ca.Id(null, map => + { + map.Column("MyClassId"); + })); + var hbmMapping = mapper.CompileMappingFor(new[] { typeof(MyClass) }); + var hbmClass = hbmMapping.RootClasses[0]; + hbmClass.Should().Not.Be.Null(); + var hbmId = hbmClass.Id; + hbmId.Should().Not.Be.Null(); + hbmId.column1.Should().Be("MyClassId"); + hbmId.type1.Should().Not.Be.Null(); + } + + [Test] public void WhenDuplicatePropertiesDoesNotDuplicateMapping() { var mapper = new ModelMapper(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
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. |
From: <fab...@us...> - 2011-04-13 17:44:42
|
Revision: 5689 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5689&view=rev Author: fabiomaulo Date: 2011-04-13 17:44:36 +0000 (Wed, 13 Apr 2011) Log Message: ----------- Improved filter for conformist mapping registration Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Mapping/ByCode/ModelMapper.cs trunk/nhibernate/src/NHibernate.Test/MappingByCode/ExpliticMappingTests/ConformistMappingRegistrationTests/ClassMappingRegistrationTest.cs Modified: trunk/nhibernate/src/NHibernate/Mapping/ByCode/ModelMapper.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Mapping/ByCode/ModelMapper.cs 2011-04-13 17:34:36 UTC (rev 5688) +++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/ModelMapper.cs 2011-04-13 17:44:36 UTC (rev 5689) @@ -1645,7 +1645,7 @@ { throw new ArgumentNullException("types"); } - foreach (var type in types.Where(x=> typeof(IConformistHoldersProvider).IsAssignableFrom(x))) + foreach (var type in types.Where(x=> typeof(IConformistHoldersProvider).IsAssignableFrom(x) && !x.IsGenericTypeDefinition)) { AddMapping(type); } Modified: trunk/nhibernate/src/NHibernate.Test/MappingByCode/ExpliticMappingTests/ConformistMappingRegistrationTests/ClassMappingRegistrationTest.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/MappingByCode/ExpliticMappingTests/ConformistMappingRegistrationTests/ClassMappingRegistrationTest.cs 2011-04-13 17:34:36 UTC (rev 5688) +++ trunk/nhibernate/src/NHibernate.Test/MappingByCode/ExpliticMappingTests/ConformistMappingRegistrationTests/ClassMappingRegistrationTest.cs 2011-04-13 17:44:36 UTC (rev 5689) @@ -15,6 +15,14 @@ public string Something { get; set; } } + private class MyClassBaseMap<T> : ClassMapping<T> where T:MyClass + { + public MyClassBaseMap() + { + Id(x => x.Id, map => map.Column("MyClassId")); + } + } + private class MyClassMap: ClassMapping<MyClass> { public MyClassMap() @@ -62,7 +70,7 @@ public void WhenRegisterClassMappingThroughCollectionOfTypeThenFilterValidMappings() { var mapper = new ModelMapper(); - mapper.Executing(x=> x.AddMappings(new[] { typeof(object), typeof(MyClassMap), typeof(MyClass) })).NotThrows(); + mapper.Executing(x => x.AddMappings(new[] { typeof(object), typeof(MyClassMap), typeof(MyClass), typeof(MyClassBaseMap<>) })).NotThrows(); var hbmMapping = mapper.CompileMappingFor(new[] { typeof(MyClass) }); ModelIsWellFormed(hbmMapping); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2011-04-13 17:34:42
|
Revision: 5688 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5688&view=rev Author: fabiomaulo Date: 2011-04-13 17:34:36 +0000 (Wed, 13 Apr 2011) Log Message: ----------- Fix NH-2644 Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Cfg/XmlHbmBinding/JoinedSubclassBinder.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/IJoinedSubclassMapper.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/JoinedSubclassCustomizer.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/JoinedSubclassMapper.cs Modified: trunk/nhibernate/src/NHibernate/Cfg/XmlHbmBinding/JoinedSubclassBinder.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Cfg/XmlHbmBinding/JoinedSubclassBinder.cs 2011-04-13 17:28:38 UTC (rev 5687) +++ trunk/nhibernate/src/NHibernate/Cfg/XmlHbmBinding/JoinedSubclassBinder.cs 2011-04-13 17:34:36 UTC (rev 5688) @@ -38,12 +38,7 @@ string schema = joinedSubclassMapping.schema ?? mappings.SchemaName; string catalog = joinedSubclassMapping.catalog ?? mappings.CatalogName; - // TODO: very strange, the schema does not support it - //XmlAttribute actionNode = subnode.Attributes["schema-action"]; - //string action = actionNode == null ? "all" : actionNode.Value; - string action = "all"; - - Table mytable = mappings.AddTable(schema, catalog, GetClassTableName(subclass, joinedSubclassMapping.table), joinedSubclassMapping.Subselect, false, action); + Table mytable = mappings.AddTable(schema, catalog, GetClassTableName(subclass, joinedSubclassMapping.table), joinedSubclassMapping.Subselect, false, joinedSubclassMapping.schemaaction); ((ITableOwner)subclass).Table = mytable; log.InfoFormat("Mapping joined-subclass: {0} -> {1}", subclass.EntityName, subclass.Table.Name); Modified: trunk/nhibernate/src/NHibernate/Mapping/ByCode/IJoinedSubclassMapper.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Mapping/ByCode/IJoinedSubclassMapper.cs 2011-04-13 17:28:38 UTC (rev 5687) +++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/IJoinedSubclassMapper.cs 2011-04-13 17:34:36 UTC (rev 5688) @@ -9,6 +9,7 @@ void Schema(string schemaName); void Key(Action<IKeyMapper> keyMapping); void Extends(System.Type baseType); + void SchemaAction(SchemaAction action); } public interface IJoinedSubclassMapper : IJoinedSubclassAttributesMapper, IPropertyContainerMapper {} @@ -19,6 +20,7 @@ void Catalog(string catalogName); void Schema(string schemaName); void Key(Action<IKeyMapper<TEntity>> keyMapping); + void SchemaAction(SchemaAction action); } public interface IJoinedSubclassMapper<TEntity> : IJoinedSubclassAttributesMapper<TEntity>, IPropertyContainerMapper<TEntity> where TEntity : class {} Modified: trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/JoinedSubclassCustomizer.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/JoinedSubclassCustomizer.cs 2011-04-13 17:28:38 UTC (rev 5687) +++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/JoinedSubclassCustomizer.cs 2011-04-13 17:34:36 UTC (rev 5688) @@ -25,6 +25,11 @@ keyMapping(keyMapper); } + public void SchemaAction(SchemaAction action) + { + CustomizersHolder.AddCustomizer(typeof(TEntity), (IJoinedSubclassAttributesMapper m) => m.SchemaAction(action)); + } + public void EntityName(string value) { CustomizersHolder.AddCustomizer(typeof (TEntity), (IJoinedSubclassAttributesMapper m) => m.EntityName(value)); Modified: trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/JoinedSubclassMapper.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/JoinedSubclassMapper.cs 2011-04-13 17:28:38 UTC (rev 5687) +++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/JoinedSubclassMapper.cs 2011-04-13 17:34:36 UTC (rev 5688) @@ -171,6 +171,11 @@ classMapping.extends = baseType.GetShortClassName(MapDoc); } + public void SchemaAction(SchemaAction action) + { + classMapping.schemaaction = action.ToSchemaActionString(); + } + #endregion } } \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2011-04-13 17:28:45
|
Revision: 5687 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5687&view=rev Author: fabiomaulo Date: 2011-04-13 17:28:38 +0000 (Wed, 13 Apr 2011) Log Message: ----------- Added schema-action for joined-subclass Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Cfg/MappingSchema/Hbm.generated.cs trunk/nhibernate/src/NHibernate/nhibernate-mapping.xsd Modified: trunk/nhibernate/src/NHibernate/Cfg/MappingSchema/Hbm.generated.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Cfg/MappingSchema/Hbm.generated.cs 2011-04-13 17:12:52 UTC (rev 5686) +++ trunk/nhibernate/src/NHibernate/Cfg/MappingSchema/Hbm.generated.cs 2011-04-13 17:28:38 UTC (rev 5687) @@ -2,7 +2,7 @@ /// <remarks/> - [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.0.0.4000")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.2.0.1001")] [System.SerializableAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] @@ -83,7 +83,7 @@ } /// <remarks/> - [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.0.0.4000")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.2.0.1001")] [System.SerializableAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] @@ -110,7 +110,7 @@ } /// <remarks/> - [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.0.0.4000")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.2.0.1001")] [System.SerializableAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] @@ -128,7 +128,7 @@ } /// <remarks/> - [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.0.0.4000")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.2.0.1001")] [System.SerializableAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] @@ -193,7 +193,7 @@ } /// <remarks/> - [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.0.0.4000")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.2.0.1001")] [System.SerializableAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] @@ -207,7 +207,7 @@ } /// <remarks/> - [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.0.0.4000")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.2.0.1001")] [System.SerializableAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] @@ -372,7 +372,7 @@ } /// <remarks/> - [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.0.0.4000")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.2.0.1001")] [System.SerializableAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] @@ -386,7 +386,7 @@ } /// <remarks/> - [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.0.0.4000")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.2.0.1001")] [System.SerializableAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] @@ -413,7 +413,7 @@ } /// <remarks/> - [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.0.0.4000")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.2.0.1001")] [System.SerializableAttribute()] [System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true, Namespace="urn:nhibernate-mapping-2.2")] public enum HbmCacheUsage { @@ -436,7 +436,7 @@ } /// <remarks/> - [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.0.0.4000")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.2.0.1001")] [System.SerializableAttribute()] [System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true, Namespace="urn:nhibernate-mapping-2.2")] public enum HbmCacheInclude { @@ -451,7 +451,7 @@ } /// <remarks/> - [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.0.0.4000")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.2.0.1001")] [System.SerializableAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] @@ -465,7 +465,7 @@ } /// <remarks/> - [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.0.0.4000")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.2.0.1001")] [System.SerializableAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] @@ -524,7 +524,7 @@ } /// <remarks/> - [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.0.0.4000")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.2.0.1001")] [System.SerializableAttribute()] [System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:nhibernate-mapping-2.2")] public enum HbmOndelete { @@ -539,7 +539,7 @@ } /// <remarks/> - [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.0.0.4000")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.2.0.1001")] [System.SerializableAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] @@ -565,7 +565,7 @@ } /// <remarks/> - [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.0.0.4000")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.2.0.1001")] [System.SerializableAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] @@ -586,7 +586,7 @@ } /// <remarks/> - [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.0.0.4000")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.2.0.1001")] [System.SerializableAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] @@ -618,7 +618,7 @@ } /// <remarks/> - [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.0.0.4000")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.2.0.1001")] [System.SerializableAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] @@ -636,7 +636,7 @@ } /// <remarks/> - [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.0.0.4000")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.2.0.1001")] [System.SerializableAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] @@ -774,7 +774,7 @@ } /// <remarks/> - [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.0.0.4000")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.2.0.1001")] [System.SerializableAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] @@ -788,7 +788,7 @@ } /// <remarks/> - [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.0.0.4000")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.2.0.1001")] [System.SerializableAttribute()] [System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:nhibernate-mapping-2.2")] public enum HbmOuterJoinStrategy { @@ -807,7 +807,7 @@ } /// <remarks/> - [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.0.0.4000")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.2.0.1001")] [System.SerializableAttribute()] [System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:nhibernate-mapping-2.2")] public enum HbmFetchMode { @@ -822,7 +822,7 @@ } /// <remarks/> - [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.0.0.4000")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.2.0.1001")] [System.SerializableAttribute()] [System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:nhibernate-mapping-2.2")] public enum HbmLaziness { @@ -841,7 +841,7 @@ } /// <remarks/> - [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.0.0.4000")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.2.0.1001")] [System.SerializableAttribute()] [System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:nhibernate-mapping-2.2")] public enum HbmNotFoundMode { @@ -856,7 +856,7 @@ } /// <remarks/> - [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.0.0.4000")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.2.0.1001")] [System.SerializableAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] @@ -892,7 +892,7 @@ } /// <remarks/> - [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.0.0.4000")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.2.0.1001")] [System.SerializableAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] @@ -1009,7 +1009,7 @@ } /// <remarks/> - [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.0.0.4000")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.2.0.1001")] [System.SerializableAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] @@ -1027,7 +1027,7 @@ } /// <remarks/> - [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.0.0.4000")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.2.0.1001")] [System.SerializableAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] @@ -1045,7 +1045,7 @@ } /// <remarks/> - [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.0.0.4000")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.2.0.1001")] [System.SerializableAttribute()] [System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:nhibernate-mapping-2.2")] public enum HbmPropertyGeneration { @@ -1064,7 +1064,7 @@ } /// <remarks/> - [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.0.0.4000")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.2.0.1001")] [System.SerializableAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] @@ -1125,7 +1125,7 @@ } /// <remarks/> - [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.0.0.4000")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.2.0.1001")] [System.SerializableAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] @@ -1155,7 +1155,7 @@ } /// <remarks/> - [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.0.0.4000")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.2.0.1001")] [System.SerializableAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] @@ -1259,7 +1259,7 @@ } /// <remarks/> - [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.0.0.4000")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.2.0.1001")] [System.SerializableAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] @@ -1281,7 +1281,7 @@ } /// <remarks/> - [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.0.0.4000")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.2.0.1001")] [System.SerializableAttribute()] [System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:nhibernate-mapping-2.2")] public enum HbmRestrictedLaziness { @@ -1296,7 +1296,7 @@ } /// <remarks/> - [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.0.0.4000")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.2.0.1001")] [System.SerializableAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] @@ -1333,7 +1333,7 @@ } /// <remarks/> - [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.0.0.4000")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.2.0.1001")] [System.SerializableAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] @@ -1347,7 +1347,7 @@ } /// <remarks/> - [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.0.0.4000")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.2.0.1001")] [System.SerializableAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] @@ -1377,7 +1377,7 @@ } /// <remarks/> - [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.0.0.4000")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.2.0.1001")] [System.SerializableAttribute()] [System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:nhibernate-mapping-2.2")] public enum HbmCustomSQLCheck { @@ -1396,7 +1396,7 @@ } /// <remarks/> - [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.0.0.4000")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.2.0.1001")] [System.SerializableAttribute()] [System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:nhibernate-mapping-2.2")] public enum HbmCollectionFetchMode { @@ -1415,7 +1415,7 @@ } /// <remarks/> - [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.0.0.4000")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.2.0.1001")] [System.SerializableAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] @@ -1595,7 +1595,7 @@ } /// <remarks/> - [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.0.0.4000")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.2.0.1001")] [System.SerializableAttribute()] [System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:nhibernate-mapping-2.2")] public enum HbmCollectionLazy { @@ -1614,7 +1614,7 @@ } /// <remarks/> - [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.0.0.4000")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.2.0.1001")] [System.SerializableAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] @@ -1833,7 +1833,7 @@ } /// <remarks/> - [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.0.0.4000")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.2.0.1001")] [System.SerializableAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] @@ -1855,7 +1855,7 @@ } /// <remarks/> - [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.0.0.4000")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.2.0.1001")] [System.SerializableAttribute()] [System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true, Namespace="urn:nhibernate-mapping-2.2")] public enum HbmTuplizerEntitymode { @@ -1874,7 +1874,7 @@ } /// <remarks/> - [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.0.0.4000")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.2.0.1001")] [System.SerializableAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] @@ -1924,7 +1924,7 @@ } /// <remarks/> - [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.0.0.4000")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.2.0.1001")] [System.SerializableAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] @@ -1983,7 +1983,7 @@ } /// <remarks/> - [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.0.0.4000")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.2.0.1001")] [System.SerializableAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] @@ -2028,7 +2028,7 @@ } /// <remarks/> - [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.0.0.4000")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.2.0.1001")] [System.SerializableAttribute()] [System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:nhibernate-mapping-2.2")] public enum HbmUnsavedValueType { @@ -2047,7 +2047,7 @@ } /// <remarks/> - [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.0.0.4000")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.2.0.1001")] [System.SerializableAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] @@ -2099,7 +2099,7 @@ } /// <remarks/> - [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.0.0.4000")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.2.0.1001")] [System.SerializableAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] @@ -2117,7 +2117,7 @@ } /// <remarks/> - [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.0.0.4000")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.2.0.1001")] [System.SerializableAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] @@ -2171,7 +2171,7 @@ } /// <remarks/> - [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.0.0.4000")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.2.0.1001")] [System.SerializableAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] @@ -2198,7 +2198,7 @@ } /// <remarks/> - [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.0.0.4000")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.2.0.1001")] [System.SerializableAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] @@ -2284,7 +2284,7 @@ } /// <remarks/> - [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.0.0.4000")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.2.0.1001")] [System.SerializableAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] @@ -2348,7 +2348,7 @@ } /// <remarks/> - [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.0.0.4000")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.2.0.1001")] [System.SerializableAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] @@ -2533,7 +2533,7 @@ } /// <remarks/> - [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.0.0.4000")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.2.0.1001")] [System.SerializableAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] @@ -2727,7 +2727,7 @@ } /// <remarks/> - [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.0.0.4000")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.2.0.1001")] [System.SerializableAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] @@ -2746,7 +2746,7 @@ } /// <remarks/> - [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.0.0.4000")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.2.0.1001")] [System.SerializableAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] @@ -2765,7 +2765,7 @@ } /// <remarks/> - [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.0.0.4000")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.2.0.1001")] [System.SerializableAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] @@ -2791,7 +2791,7 @@ } /// <remarks/> - [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.0.0.4000")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.2.0.1001")] [System.SerializableAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] @@ -2821,7 +2821,7 @@ } /// <remarks/> - [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.0.0.4000")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.2.0.1001")] [System.SerializableAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] @@ -2856,7 +2856,7 @@ } /// <remarks/> - [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.0.0.4000")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.2.0.1001")] [System.SerializableAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] @@ -2891,7 +2891,7 @@ } /// <remarks/> - [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.0.0.4000")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.2.0.1001")] [System.SerializableAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] @@ -2984,7 +2984,7 @@ } /// <remarks/> - [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.0.0.4000")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.2.0.1001")] [System.SerializableAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] @@ -3126,7 +3126,7 @@ } /// <remarks/> - [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.0.0.4000")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.2.0.1001")] [System.SerializableAttribute()] [System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true, Namespace="urn:nhibernate-mapping-2.2")] public enum HbmPrimitivearrayOuterjoin { @@ -3145,7 +3145,7 @@ } /// <remarks/> - [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.0.0.4000")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.2.0.1001")] [System.SerializableAttribute()] [System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true, Namespace="urn:nhibernate-mapping-2.2")] public enum HbmPrimitivearrayFetch { @@ -3164,7 +3164,7 @@ } /// <remarks/> - [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.0.0.4000")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.2.0.1001")] [System.SerializableAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] @@ -3348,7 +3348,7 @@ } /// <remarks/> - [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.0.0.4000")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.2.0.1001")] [System.SerializableAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] @@ -3531,7 +3531,7 @@ } /// <remarks/> - [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.0.0.4000")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.2.0.1001")] [System.SerializableAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] @@ -3564,7 +3564,7 @@ } /// <remarks/> - [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.0.0.4000")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.2.0.1001")] [System.SerializableAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] @@ -3617,7 +3617,7 @@ } /// <remarks/> - [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.0.0.4000")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.2.0.1001")] [System.SerializableAttribute()] [System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true, Namespace="urn:nhibernate-mapping-2.2")] public enum HbmTimestampUnsavedvalue { @@ -3632,7 +3632,7 @@ } /// <remarks/> - [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.0.0.4000")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.2.0.1001")] [System.SerializableAttribute()] [System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true, Namespace="urn:nhibernate-mapping-2.2")] public enum HbmTimestampSource { @@ -3647,7 +3647,7 @@ } /// <remarks/> - [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.0.0.4000")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.2.0.1001")] [System.SerializableAttribute()] [System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:nhibernate-mapping-2.2")] public enum HbmVersionGeneration { @@ -3662,7 +3662,7 @@ } /// <remarks/> - [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.0.0.4000")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.2.0.1001")] [System.SerializableAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] @@ -3723,7 +3723,7 @@ } /// <remarks/> - [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.0.0.4000")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.2.0.1001")] [System.SerializableAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] @@ -3775,7 +3775,7 @@ } /// <remarks/> - [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.0.0.4000")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.2.0.1001")] [System.SerializableAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] @@ -3858,7 +3858,7 @@ } /// <remarks/> - [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.0.0.4000")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.2.0.1001")] [System.SerializableAttribute()] [System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true, Namespace="urn:nhibernate-mapping-2.2")] public enum HbmJoinFetch { @@ -3873,7 +3873,7 @@ } /// <remarks/> - [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.0.0.4000")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.2.0.1001")] [System.SerializableAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] @@ -3964,6 +3964,10 @@ public string table; /// <remarks/> + [System.Xml.Serialization.XmlAttributeAttribute("schema-action")] + public string schemaaction; + + /// <remarks/> [System.Xml.Serialization.XmlAttributeAttribute()] public string schema; @@ -4034,7 +4038,7 @@ } /// <remarks/> - [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.0.0.4000")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.2.0.1001")] [System.SerializableAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] @@ -4055,7 +4059,7 @@ } /// <remarks/> - [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.0.0.4000")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.2.0.1001")] [System.SerializableAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] @@ -4086,7 +4090,7 @@ } /// <remarks/> - [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.0.0.4000")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.2.0.1001")] [System.SerializableAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] @@ -4108,7 +4112,7 @@ } /// <remarks/> - [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.0.0.4000")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.2.0.1001")] [System.SerializableAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] @@ -4122,7 +4126,7 @@ } /// <remarks/> - [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.0.0.4000")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.2.0.1001")] [System.SerializableAttribute()] [System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:nhibernate-mapping-2.2")] public enum HbmLockMode { @@ -4149,7 +4153,7 @@ } /// <remarks/> - [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.0.0.4000")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.2.0.1001")] [System.SerializableAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] @@ -4188,7 +4192,7 @@ } /// <remarks/> - [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.0.0.4000")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.2.0.1001")] [System.SerializableAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] @@ -4202,7 +4206,7 @@ } /// <remarks/> - [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.0.0.4000")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.2.0.1001")] [System.SerializableAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] @@ -4233,7 +4237,7 @@ } /// <remarks/> - [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.0.0.4000")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.2.0.1001")] [System.SerializableAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] @@ -4251,7 +4255,7 @@ } /// <remarks/> - [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.0.0.4000")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.2.0.1001")] [System.SerializableAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] @@ -4326,7 +4330,7 @@ } /// <remarks/> - [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.0.0.4000")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.2.0.1001")] [System.SerializableAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] @@ -4344,7 +4348,7 @@ } /// <remarks/> - [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.0.0.4000")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.2.0.1001")] [System.SerializableAttribute()] [System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:nhibernate-mapping-2.2")] public enum HbmFlushMode { @@ -4363,7 +4367,7 @@ } /// <remarks/> - [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.0.0.4000")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.2.0.1001")] [System.SerializableAttribute()] [System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:nhibernate-mapping-2.2")] public enum HbmCacheMode { @@ -4390,7 +4394,7 @@ } /// <remarks/> - [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.0.0.4000")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.2.0.1001")] [System.SerializableAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] @@ -4480,7 +4484,7 @@ } /// <remarks/> - [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.0.0.4000")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.2.0.1001")] [System.SerializableAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] @@ -4620,7 +4624,7 @@ } /// <remarks/> - [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.0.0.4000")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.2.0.1001")] [System.SerializableAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] @@ -4778,7 +4782,7 @@ } /// <remarks/> - [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.0.0.4000")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.2.0.1001")] [System.SerializableAttribute()] [System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:nhibernate-mapping-2.2")] public enum HbmPolymorphismType { @@ -4793,7 +4797,7 @@ } /// <remarks/> - [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.0.0.4000")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.2.0.1001")] [System.SerializableAttribute()] [System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:nhibernate-mapping-2.2")] public enum HbmOptimisticLockMode { @@ -4816,7 +4820,7 @@ } /// <remarks/> - [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.0.0.4000")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.2.0.1001")] [System.SerializableAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] @@ -4830,7 +4834,7 @@ } /// <remarks/> - [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.0.0.4000")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.2.0.1001")] [System.SerializableAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] @@ -4850,7 +4854,7 @@ } /// <remarks/> - [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.0.0.4000")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.2.0.1001")] [System.SerializableAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] @@ -4868,7 +4872,7 @@ } /// <remarks/> - [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.0.0.4000")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.2.0.1001")] [System.SerializableAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] @@ -4882,7 +4886,7 @@ } /// <remarks/> - [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.0.0.4000")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.2.0.1001")] [System.SerializableAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] @@ -4900,7 +4904,7 @@ } /// <remarks/> - [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.0.0.4000")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.2.0.1001")] [System.SerializableAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] @@ -4935,7 +4939,7 @@ } /// <remarks/> - [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.0.0.4000")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.2.0.1001")] [System.SerializableAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] @@ -4953,7 +4957,7 @@ } /// <remarks/> - [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.0.0.4000")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.2.0.1001")] [System.SerializableAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] @@ -5042,7 +5046,7 @@ } /// <remarks/> - [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.0.0.4000")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.2.0.1001")] [System.SerializableAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] @@ -5064,7 +5068,7 @@ } /// <remarks/> - [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.0.0.4000")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("HbmXsd", "3.2.0.1001")] [System.SerializableAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] Modified: trunk/nhibernate/src/NHibernate/nhibernate-mapping.xsd =================================================================== --- trunk/nhibernate/src/NHibernate/nhibernate-mapping.xsd 2011-04-13 17:12:52 UTC (rev 5686) +++ trunk/nhibernate/src/NHibernate/nhibernate-mapping.xsd 2011-04-13 17:28:38 UTC (rev 5687) @@ -692,7 +692,8 @@ <xs:attribute name="name" type="xs:string" /> <xs:attribute name="proxy" type="xs:string" /> <xs:attribute name="table" type="xs:string" /> - <xs:attribute name="schema" type="xs:string" /> + <xs:attribute name="schema-action" type="xs:string" /> + <xs:attribute name="schema" type="xs:string" /> <xs:attribute name="catalog" type="xs:string" /> <xs:attribute name="subselect" type="xs:string" /> <xs:attribute name="dynamic-update" default="false" type="xs:boolean"> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2011-04-13 17:12:59
|
Revision: 5686 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5686&view=rev Author: fabiomaulo Date: 2011-04-13 17:12:52 +0000 (Wed, 13 Apr 2011) Log Message: ----------- Fix NH-2642 (thanks to Roger) Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Driver/BasicResultSetsCommand.cs trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/DataReaderWrapperTest/ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/DataReaderWrapperTest/Fixture.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/DataReaderWrapperTest/Mappings.hbm.xml trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/DataReaderWrapperTest/Model.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/DataReaderWrapperTest/TheUserType.cs Modified: trunk/nhibernate/src/NHibernate/Driver/BasicResultSetsCommand.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Driver/BasicResultSetsCommand.cs 2011-04-13 17:02:42 UTC (rev 5685) +++ trunk/nhibernate/src/NHibernate/Driver/BasicResultSetsCommand.cs 2011-04-13 17:12:52 UTC (rev 5686) @@ -149,7 +149,7 @@ public object GetValue(int i) { - return reader.GetDecimal(i); + return reader.GetValue(i); } public int GetValues(object[] values) Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/DataReaderWrapperTest/Fixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/DataReaderWrapperTest/Fixture.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/DataReaderWrapperTest/Fixture.cs 2011-04-13 17:12:52 UTC (rev 5686) @@ -0,0 +1,54 @@ +using System.Collections; +using NUnit.Framework; +using SharpTestsEx; + +namespace NHibernate.Test.NHSpecificTest.DataReaderWrapperTest +{ + [TestFixture] + public class Fixture : BugTestCase + { + private const int id = 1333; + + protected override void OnSetUp() + { + var ent = new TheEntity { TheValue = "Hola", Id = id }; + using (var s = OpenSession()) + { + using (var tx = s.BeginTransaction()) + { + s.Save(ent); + tx.Commit(); + } + } + } + + protected override void OnTearDown() + { + using (var s = OpenSession()) + { + using (var tx = s.BeginTransaction()) + { + s.Delete(s.Get<TheEntity>(id)); + tx.Commit(); + } + } + } + + [Test] + public void CanUseDatareadersGetValue() + { + using (var s = OpenSession()) + { + using (s.BeginTransaction()) + { + var crit = s.CreateCriteria(typeof (TheEntity)); + var multi = s.CreateMultiCriteria(); + multi.Add(crit); + var res = (IList)multi.List()[0]; + res.Count + .Should().Be.EqualTo(1); + } + } + } + } +} Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/DataReaderWrapperTest/Mappings.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/DataReaderWrapperTest/Mappings.hbm.xml (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/DataReaderWrapperTest/Mappings.hbm.xml 2011-04-13 17:12:52 UTC (rev 5686) @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" + namespace="NHibernate.Test.NHSpecificTest.DataReaderWrapperTest" + assembly="NHibernate.Test"> + + <class name="TheEntity"> + <id name="Id" type="Int32"> + <generator class="assigned" /> + </id> + <property name="TheValue" type="NHibernate.Test.NHSpecificTest.DataReaderWrapperTest.TheUserType, NHibernate.Test" /> + </class> +</hibernate-mapping> Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/DataReaderWrapperTest/Model.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/DataReaderWrapperTest/Model.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/DataReaderWrapperTest/Model.cs 2011-04-13 17:12:52 UTC (rev 5686) @@ -0,0 +1,8 @@ +namespace NHibernate.Test.NHSpecificTest.DataReaderWrapperTest +{ + public class TheEntity + { + public virtual int Id { get; set; } + public virtual string TheValue { get; set; } + } +} Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/DataReaderWrapperTest/TheUserType.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/DataReaderWrapperTest/TheUserType.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/DataReaderWrapperTest/TheUserType.cs 2011-04-13 17:12:52 UTC (rev 5686) @@ -0,0 +1,65 @@ +using System; +using System.Data; +using NHibernate.SqlTypes; +using NHibernate.UserTypes; + +namespace NHibernate.Test.NHSpecificTest.DataReaderWrapperTest +{ + public class TheUserType : IUserType + { + public SqlType[] SqlTypes + { + get { return new[] {new SqlType(DbType.String)}; } + } + + public System.Type ReturnedType + { + get { return typeof(string); } + } + + public bool Equals(object x, object y) + { + return x.Equals(y); + } + + public int GetHashCode(object x) + { + return x.GetHashCode(); + } + + public object NullSafeGet(IDataReader rs, string[] names, object owner) + { + return rs.GetValue(rs.GetOrdinal(names[0])); + } + + public void NullSafeSet(IDbCommand cmd, object value, int index) + { + NHibernateUtil.String.NullSafeSet(cmd, value, index); + } + + public object DeepCopy(object value) + { + return value; + } + + public bool IsMutable + { + get { return NHibernateUtil.String.IsMutable; } + } + + public object Replace(object original, object target, object owner) + { + return original; + } + + public object Assemble(object cached, object owner) + { + return cached; + } + + public object Disassemble(object value) + { + return value; + } + } +} Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2011-04-13 17:02:42 UTC (rev 5685) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2011-04-13 17:12:52 UTC (rev 5686) @@ -571,6 +571,9 @@ <Compile Include="NHSpecificTest\AccessAndCorrectPropertyName\Model.cs" /> <Compile Include="NHSpecificTest\BagWithLazyExtraAndFilter\Domain.cs" /> <Compile Include="NHSpecificTest\BagWithLazyExtraAndFilter\Fixture.cs" /> + <Compile Include="NHSpecificTest\DataReaderWrapperTest\Fixture.cs" /> + <Compile Include="NHSpecificTest\DataReaderWrapperTest\Model.cs" /> + <Compile Include="NHSpecificTest\DataReaderWrapperTest\TheUserType.cs" /> <Compile Include="NHSpecificTest\EntityNameAndCompositeId\Fixture.cs" /> <Compile Include="NHSpecificTest\EntityNameAndInheritance\Fixture.cs" /> <Compile Include="NHSpecificTest\EntityNameWithFullName\Fixture.cs" /> @@ -2568,6 +2571,7 @@ <EmbeddedResource Include="NHSpecificTest\NH1291AnonExample\Mappings.hbm.xml" /> </ItemGroup> <ItemGroup> + <EmbeddedResource Include="NHSpecificTest\DataReaderWrapperTest\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\SqlConverterAndMultiQuery\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH2489\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH2603\Mappings.hbm.xml" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2011-04-13 17:02:49
|
Revision: 5685 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5685&view=rev Author: fabiomaulo Date: 2011-04-13 17:02:42 +0000 (Wed, 13 Apr 2011) Log Message: ----------- Reverted naming conventions (perhaps we should be far away to do it) Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Mapping/ByCode/ConventionModelMapper.cs trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Removed Paths: ------------- trunk/nhibernate/src/NHibernate.Test/MappingByCode/ConventionModelMapperTests/JoinedSubclassKeyAsRootIdColumnTest.cs trunk/nhibernate/src/NHibernate.Test/MappingByCode/ConventionModelMapperTests/ManyToManyInCollectionTableTests.cs trunk/nhibernate/src/NHibernate.Test/MappingByCode/ConventionModelMapperTests/ManyToManyKeyIdColumnTests.cs trunk/nhibernate/src/NHibernate.Test/MappingByCode/ConventionModelMapperTests/PropertyColumnNameTests.cs Modified: trunk/nhibernate/src/NHibernate/Mapping/ByCode/ConventionModelMapper.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Mapping/ByCode/ConventionModelMapper.cs 2011-04-13 11:48:08 UTC (rev 5684) +++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/ConventionModelMapper.cs 2011-04-13 17:02:42 UTC (rev 5685) @@ -15,78 +15,8 @@ protected virtual void AppendDefaultEvents() { - BeforeMapJoinedSubclass += JoinedSubclassKeyAsRootIdColumn; - BeforeMapProperty += PropertyColumnName; - BeforeMapList += ManyToManyInCollectionTable; - BeforeMapBag += ManyToManyInCollectionTable; - BeforeMapIdBag += ManyToManyInCollectionTable; - BeforeMapSet += ManyToManyInCollectionTable; - BeforeMapMap += ManyToManyInCollectionTable; - - BeforeMapList += ManyToManyKeyIdColumn; - BeforeMapBag += ManyToManyKeyIdColumn; - BeforeMapIdBag += ManyToManyKeyIdColumn; - BeforeMapSet += ManyToManyKeyIdColumn; - BeforeMapMap += ManyToManyKeyIdColumn; } - protected void ManyToManyKeyIdColumn(IModelInspector modelInspector, PropertyPath member, ICollectionPropertiesMapper collectionCustomizer) - { - System.Type propertyType = member.LocalMember.GetPropertyOrFieldType(); - - System.Type fromMany = member.GetContainerEntity(modelInspector); - System.Type toMany = propertyType.DetermineCollectionElementOrDictionaryValueType(); - if (!modelInspector.IsEntity(toMany)) - { - // does not apply when the relation is on the key of the dictionary - return; - } - - collectionCustomizer.Key(km => km.Column(fromMany.Name + "Id")); - } - - protected void ManyToManyInCollectionTable(IModelInspector modelInspector, PropertyPath member, ICollectionPropertiesMapper collectionCustomizer) - { - System.Type propertyType = member.LocalMember.GetPropertyOrFieldType(); - - System.Type fromMany = member.GetContainerEntity(modelInspector); - System.Type toMany = propertyType.DetermineCollectionElementOrDictionaryValueType(); - if(!modelInspector.IsEntity(toMany)) - { - // does not apply when the relation is on the key of the dictionary - // Note: a dictionary may have relation with 3 entities; in this handler we are covering only relations on values - return; - } - var relation = new[] { fromMany, toMany }; - var twoEntitiesNames = (from relationOn in relation orderby relationOn.Name select relationOn.Name).ToArray(); - - collectionCustomizer.Table(string.Format("{0}To{1}", twoEntitiesNames[0], twoEntitiesNames[1])); - } - - protected void PropertyColumnName(IModelInspector modelInspector, PropertyPath member, IPropertyMapper propertyCustomizer) - { - if (member.PreviousPath == null || member.LocalMember == null) - { - return; - } - if (member.PreviousPath.LocalMember.GetPropertyOrFieldType().IsGenericCollection()) - { - return; - } - - var pathToMap = member.DepureFirstLevelIfCollection(); - propertyCustomizer.Column(pathToMap.ToColumnName()); - } - - protected void JoinedSubclassKeyAsRootIdColumn(IModelInspector modelInspector, System.Type type, IJoinedSubclassAttributesMapper joinedSubclassCustomizer) - { - var idMember = type.GetProperties().Cast<MemberInfo>().Concat(type.GetFields()).FirstOrDefault(mi => modelInspector.IsPersistentId(mi.GetMemberFromDeclaringType())); - if (idMember != null) - { - joinedSubclassCustomizer.Key(km => km.Column(idMember.Name)); - } - } - protected SimpleModelInspector SimpleModelInspector { get { return (SimpleModelInspector) base.ModelInspector; } Deleted: trunk/nhibernate/src/NHibernate.Test/MappingByCode/ConventionModelMapperTests/JoinedSubclassKeyAsRootIdColumnTest.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/MappingByCode/ConventionModelMapperTests/JoinedSubclassKeyAsRootIdColumnTest.cs 2011-04-13 11:48:08 UTC (rev 5684) +++ trunk/nhibernate/src/NHibernate.Test/MappingByCode/ConventionModelMapperTests/JoinedSubclassKeyAsRootIdColumnTest.cs 2011-04-13 17:02:42 UTC (rev 5685) @@ -1,53 +0,0 @@ -using System.Linq; -using NHibernate.Mapping.ByCode; -using NUnit.Framework; -using SharpTestsEx; - -namespace NHibernate.Test.MappingByCode.ConventionModelMapperTests -{ - public class JoinedSubclassKeyAsRootIdColumnTest - { - private class MyClass - { - public int MyId { get; set; } - public int HisId { get; set; } - } - - private class Inherited : MyClass - { - } - - [Test] - public void WhenBaseIsIdThenUseId() - { - var mapper = new ConventionModelMapper(); - mapper.Class<MyClass>(map=> map.Id(x=> x.MyId)); - var mapping = mapper.CompileMappingFor(new[] { typeof(Inherited), typeof(MyClass) }); - var hbmJoinedClass = mapping.JoinedSubclasses[0]; - - hbmJoinedClass.key.Columns.Single().name.Should().Be("MyId"); - } - - [Test] - public void WhenBaseIsPoIdThenUsePoId() - { - var mapper = new ConventionModelMapper(); - mapper.Class<MyClass>(map => map.Id(x => x.HisId)); - var mapping = mapper.CompileMappingFor(new[] { typeof(Inherited), typeof(MyClass) }); - var hbmJoinedClass = mapping.JoinedSubclasses[0]; - - hbmJoinedClass.key.Columns.Single().name.Should().Be("HisId"); - } - - [Test] - public void WhenNoPoidMemberThenDoesNotSet() - { - var mapper = new ConventionModelMapper(); - mapper.Class<MyClass>(map => { }); - var mapping = mapper.CompileMappingFor(new[] { typeof(Inherited), typeof(MyClass) }); - var hbmJoinedClass = mapping.JoinedSubclasses[0]; - - hbmJoinedClass.key.Columns.Single().name.Should().Not.Be("MyId").And.Not.Be("HisId"); - } - } -} \ No newline at end of file Deleted: trunk/nhibernate/src/NHibernate.Test/MappingByCode/ConventionModelMapperTests/ManyToManyInCollectionTableTests.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/MappingByCode/ConventionModelMapperTests/ManyToManyInCollectionTableTests.cs 2011-04-13 11:48:08 UTC (rev 5684) +++ trunk/nhibernate/src/NHibernate.Test/MappingByCode/ConventionModelMapperTests/ManyToManyInCollectionTableTests.cs 2011-04-13 17:02:42 UTC (rev 5685) @@ -1,101 +0,0 @@ -using System.Collections.Generic; -using System.Linq; -using NHibernate.Cfg.MappingSchema; -using NHibernate.Mapping.ByCode; -using NUnit.Framework; -using SharpTestsEx; - -namespace NHibernate.Test.MappingByCode.ConventionModelMapperTests -{ - public class ManyToManyInCollectionTableTests - { - private class MyClass - { - public int Id { get; set; } - public ICollection<MyBidirect> MyBidirects { get; set; } - public IDictionary<MyBidirect, string> MapKey { get; set; } - public IDictionary<string, MyBidirect> MapValue { get; set; } - public MyComponent MyComponent { get; set; } - } - - private class MyComponent - { - public ICollection<MyBidirect> MyBidirects { get; set; } - } - - private class MyBidirect - { - public int Id { get; set; } - public ICollection<MyClass> MyClasses { get; set; } - } - - private HbmMapping GetModelMapping() - { - var mapper = new ConventionModelMapper(); - mapper.Class<MyClass>(map => - { - map.Bag(mc => mc.MyBidirects, c => { }, rel => rel.ManyToMany()); - map.Map(mc => mc.MapKey, c => { }, mk => mk.ManyToMany(), mv => { }); - map.Map(mc => mc.MapValue, c => { }, mk => { }, mv => mv.ManyToMany()); - }); - mapper.Class<MyBidirect>(map => - { - map.Bag(mc => mc.MyClasses, c => { }, rel => rel.ManyToMany()); - }); - mapper.Component<MyComponent>(map => - { - map.Bag(mc => mc.MyBidirects, c => { }, rel => rel.ManyToMany()); - }); - return mapper.CompileMappingFor(new[] {typeof (MyClass), typeof (MyBidirect)}); - } - - [Test] - public void WhenManyToManyCollectionThenApplyTableAlphabetical() - { - HbmMapping mapping = GetModelMapping(); - - var hbmMyClass = mapping.RootClasses.Where(x => x.Name.Contains("MyClass")).Single(); - var hbmMyBidirect = mapping.RootClasses.Where(x => x.Name.Contains("MyBidirect")).Single(); - - var hbmBagMyClass = hbmMyClass.Properties.Where(p => p.Name == "MyBidirects").OfType<HbmBag>().Single(); - var hbmBagMyBidirect = hbmMyBidirect.Properties.Where(p => p.Name == "MyClasses").OfType<HbmBag>().Single(); - - hbmBagMyClass.Table.Should().Be("MyBidirectToMyClass"); - hbmBagMyBidirect.Table.Should().Be(hbmBagMyClass.Table); - } - - [Test] - public void WhenRelationDeclaredAsManyToManyForDictionaryKeyThenNoMatch() - { - HbmMapping mapping = GetModelMapping(); - - var hbmMyClass = mapping.RootClasses.Where(x => x.Name.Contains("MyClass")).Single(); - var hbmMapKey = hbmMyClass.Properties.Where(p => p.Name == "MapKey").OfType<HbmMap>().Single(); - - hbmMapKey.Table.Should().Be.Null(); - } - - [Test] - public void WhenRelationDeclaredAsManyToManyForDictionaryValueThenMatch() - { - HbmMapping mapping = GetModelMapping(); - - var hbmMyClass = mapping.RootClasses.Where(x => x.Name.Contains("MyClass")).Single(); - var hbmMapValue = hbmMyClass.Properties.Where(p => p.Name == "MapValue").OfType<HbmMap>().Single(); - - hbmMapValue.Table.Should().Be("MyBidirectToMyClass"); - } - - [Test] - public void WhenManyToManyCollectionInsideComponentThenApplyFromEntityToEntity() - { - HbmMapping mapping = GetModelMapping(); - - var hbmMyClass = mapping.RootClasses.Where(x => x.Name.Contains("MyClass")).Single(); - var hbmMyComponent = hbmMyClass.Properties.Where(p => p.Name == "MyComponent").OfType<HbmComponent>().Single(); - var hbmBagMyClass = hbmMyComponent.Properties.Where(p => p.Name == "MyBidirects").OfType<HbmBag>().Single(); - - hbmBagMyClass.Table.Should().Be("MyBidirectToMyClass"); - } - } -} \ No newline at end of file Deleted: trunk/nhibernate/src/NHibernate.Test/MappingByCode/ConventionModelMapperTests/ManyToManyKeyIdColumnTests.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/MappingByCode/ConventionModelMapperTests/ManyToManyKeyIdColumnTests.cs 2011-04-13 11:48:08 UTC (rev 5684) +++ trunk/nhibernate/src/NHibernate.Test/MappingByCode/ConventionModelMapperTests/ManyToManyKeyIdColumnTests.cs 2011-04-13 17:02:42 UTC (rev 5685) @@ -1,101 +0,0 @@ -using System.Collections.Generic; -using System.Linq; -using NHibernate.Cfg.MappingSchema; -using NHibernate.Mapping.ByCode; -using NUnit.Framework; -using SharpTestsEx; - -namespace NHibernate.Test.MappingByCode.ConventionModelMapperTests -{ - public class ManyToManyKeyIdColumnTests - { - private class MyClass - { - public int Id { get; set; } - public ICollection<MyBidirect> MyBidirects { get; set; } - public IDictionary<MyBidirect, string> MapKey { get; set; } - public IDictionary<string, MyBidirect> MapValue { get; set; } - public MyComponent MyComponent { get; set; } - } - - private class MyComponent - { - public ICollection<MyBidirect> MyBidirects { get; set; } - } - - private class MyBidirect - { - public int Id { get; set; } - public ICollection<MyClass> MyClasses { get; set; } - } - - private HbmMapping GetModelMapping() - { - var mapper = new ConventionModelMapper(); - mapper.Class<MyClass>(map => - { - map.Bag(mc => mc.MyBidirects, c => { }, rel => rel.ManyToMany()); - map.Map(mc => mc.MapKey, c => { }, mk => mk.ManyToMany(), mv => { }); - map.Map(mc => mc.MapValue, c => { }, mk => { }, mv => mv.ManyToMany()); - }); - mapper.Class<MyBidirect>(map => - { - map.Bag(mc => mc.MyClasses, c => { }, rel => rel.ManyToMany()); - }); - mapper.Component<MyComponent>(map => - { - map.Bag(mc => mc.MyBidirects, c => { }, rel => rel.ManyToMany()); - }); - return mapper.CompileMappingFor(new[] { typeof(MyClass), typeof(MyBidirect) }); - } - - [Test] - public void WhenManyToManyCollectionThenApplyTableAlphabetical() - { - HbmMapping mapping = GetModelMapping(); - - var hbmMyClass = mapping.RootClasses.Where(x => x.Name.Contains("MyClass")).Single(); - var hbmMyBidirect = mapping.RootClasses.Where(x => x.Name.Contains("MyBidirect")).Single(); - - var hbmBagMyClass = hbmMyClass.Properties.Where(p => p.Name == "MyBidirects").OfType<HbmBag>().Single(); - var hbmBagMyBidirect = hbmMyBidirect.Properties.Where(p => p.Name == "MyClasses").OfType<HbmBag>().Single(); - - hbmBagMyClass.Key.column1.Should().Be("MyClassId"); - hbmBagMyBidirect.Key.column1.Should().Be("MyBidirectId"); - } - - [Test] - public void WhenRelationDeclaredAsManyToManyForDictionaryKeyThenNoMatch() - { - HbmMapping mapping = GetModelMapping(); - - var hbmMyClass = mapping.RootClasses.Where(x => x.Name.Contains("MyClass")).Single(); - var hbmMapKey = hbmMyClass.Properties.Where(p => p.Name == "MapKey").OfType<HbmMap>().Single(); - - hbmMapKey.Key.Columns.Single().name.Should().Not.Be("MyClassId"); - } - - [Test] - public void WhenRelationDeclaredAsManyToManyForDictionaryValueThenMatch() - { - HbmMapping mapping = GetModelMapping(); - - var hbmMyClass = mapping.RootClasses.Where(x => x.Name.Contains("MyClass")).Single(); - var hbmMapValue = hbmMyClass.Properties.Where(p => p.Name == "MapValue").OfType<HbmMap>().Single(); - - hbmMapValue.Key.column1.Should().Be("MyClassId"); - } - - [Test] - public void WhenManyToManyCollectionInsideComponentThenApplyFromEntityToEntity() - { - HbmMapping mapping = GetModelMapping(); - - var hbmMyClass = mapping.RootClasses.Where(x => x.Name.Contains("MyClass")).Single(); - var hbmMyComponent = hbmMyClass.Properties.Where(p => p.Name == "MyComponent").OfType<HbmComponent>().Single(); - var hbmBagMyClass = hbmMyComponent.Properties.Where(p => p.Name == "MyBidirects").OfType<HbmBag>().Single(); - - hbmBagMyClass.Key.column1.Should().Be("MyClassId"); - } - } -} \ No newline at end of file Deleted: trunk/nhibernate/src/NHibernate.Test/MappingByCode/ConventionModelMapperTests/PropertyColumnNameTests.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/MappingByCode/ConventionModelMapperTests/PropertyColumnNameTests.cs 2011-04-13 11:48:08 UTC (rev 5684) +++ trunk/nhibernate/src/NHibernate.Test/MappingByCode/ConventionModelMapperTests/PropertyColumnNameTests.cs 2011-04-13 17:02:42 UTC (rev 5685) @@ -1,63 +0,0 @@ -using System.Collections.Generic; -using System.Linq; -using NHibernate.Cfg.MappingSchema; -using NHibernate.Mapping.ByCode; -using NUnit.Framework; -using SharpTestsEx; - -namespace NHibernate.Test.MappingByCode.ConventionModelMapperTests -{ - public class PropertyColumnNameTests - { - private class MyClass - { - public int Id { get; set; } - public string Fake1 { get; set; } - } - - private class MyClassWithComponent - { - public int Id { get; set; } - public MyComponent Component1 { get; set; } - public IEnumerable<MyComponent> Components { get; set; } - } - - private class MyComponent - { - public string Fake0 { get; set; } - } - - [Test] - public void WhenAtClassLevelThenNoMatch() - { - var mapper = new ConventionModelMapper(); - var mapping = mapper.CompileMappingFor(new[] { typeof(MyClass) }); - var hbmClass = mapping.RootClasses[0]; - var hbmProperty = hbmClass.Properties.OfType<HbmProperty>().Single(x => x.Name == "Fake1"); - hbmProperty.Columns.Should().Be.Empty(); - } - - [Test] - public void WhenFirstLevelIsCollectionThenNoMatch() - { - var mapper = new ConventionModelMapper(); - var mapping = mapper.CompileMappingFor(new[] { typeof(MyClassWithComponent) }); - var hbmClass = mapping.RootClasses[0]; - var hbmBag = hbmClass.Properties.OfType<HbmBag>().Single(x => x.Name == "Components"); - var hbmCompositeElement = (HbmCompositeElement) hbmBag.ElementRelationship; - var hbmProperty = hbmCompositeElement.Properties.OfType<HbmProperty>().Single(x => x.Name == "Fake0"); - hbmProperty.Columns.Should().Be.Empty(); - } - - [Test] - public void WhenAtComponentLevelThenMatch() - { - var mapper = new ConventionModelMapper(); - var mapping = mapper.CompileMappingFor(new[] { typeof(MyClassWithComponent) }); - var hbmClass = mapping.RootClasses[0]; - var hbmComponent = hbmClass.Properties.OfType<HbmComponent>().Single(); - var hbmProperty = hbmComponent.Properties.OfType<HbmProperty>().Single(x => x.Name == "Fake0"); - hbmProperty.Columns.Single().name.Should().Be("Component1Fake0"); - } - } -} \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2011-04-13 11:48:08 UTC (rev 5684) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2011-04-13 17:02:42 UTC (rev 5685) @@ -511,10 +511,6 @@ <Compile Include="Linq\ByMethod\SumTests.cs" /> <Compile Include="Logging\Log4NetLoggerTest.cs" /> <Compile Include="Logging\LoggerProviderTest.cs" /> - <Compile Include="MappingByCode\ConventionModelMapperTests\JoinedSubclassKeyAsRootIdColumnTest.cs" /> - <Compile Include="MappingByCode\ConventionModelMapperTests\ManyToManyInCollectionTableTests.cs" /> - <Compile Include="MappingByCode\ConventionModelMapperTests\ManyToManyKeyIdColumnTests.cs" /> - <Compile Include="MappingByCode\ConventionModelMapperTests\PropertyColumnNameTests.cs" /> <Compile Include="MappingByCode\ExpliticMappingTests\BagOfNestedComponentsWithParentTest.cs" /> <Compile Include="MappingByCode\ExpliticMappingTests\ClassWithComponentsTest.cs" /> <Compile Include="MappingByCode\ExpliticMappingTests\ConformistMappingRegistrationTests\ClassMappingRegistrationTest.cs" /> @@ -2976,6 +2972,7 @@ <EmbeddedResource Include="DynamicEntity\Tuplizer\Customer.hbm.xml" /> </ItemGroup> <ItemGroup> + <Folder Include="MappingByCode\ConventionModelMapperTests\" /> <Folder Include="Properties\" /> </ItemGroup> <ItemGroup> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2011-04-13 11:48:19
|
Revision: 5684 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5684&view=rev Author: fabiomaulo Date: 2011-04-13 11:48:08 +0000 (Wed, 13 Apr 2011) Log Message: ----------- ConventionModelMapper with convention for many-to-many key Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Mapping/ByCode/ConventionModelMapper.cs trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate.Test/MappingByCode/ConventionModelMapperTests/ManyToManyKeyIdColumnTests.cs Modified: trunk/nhibernate/src/NHibernate/Mapping/ByCode/ConventionModelMapper.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Mapping/ByCode/ConventionModelMapper.cs 2011-04-13 04:15:56 UTC (rev 5683) +++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/ConventionModelMapper.cs 2011-04-13 11:48:08 UTC (rev 5684) @@ -19,10 +19,32 @@ BeforeMapProperty += PropertyColumnName; BeforeMapList += ManyToManyInCollectionTable; BeforeMapBag += ManyToManyInCollectionTable; + BeforeMapIdBag += ManyToManyInCollectionTable; BeforeMapSet += ManyToManyInCollectionTable; BeforeMapMap += ManyToManyInCollectionTable; + + BeforeMapList += ManyToManyKeyIdColumn; + BeforeMapBag += ManyToManyKeyIdColumn; + BeforeMapIdBag += ManyToManyKeyIdColumn; + BeforeMapSet += ManyToManyKeyIdColumn; + BeforeMapMap += ManyToManyKeyIdColumn; } + protected void ManyToManyKeyIdColumn(IModelInspector modelInspector, PropertyPath member, ICollectionPropertiesMapper collectionCustomizer) + { + System.Type propertyType = member.LocalMember.GetPropertyOrFieldType(); + + System.Type fromMany = member.GetContainerEntity(modelInspector); + System.Type toMany = propertyType.DetermineCollectionElementOrDictionaryValueType(); + if (!modelInspector.IsEntity(toMany)) + { + // does not apply when the relation is on the key of the dictionary + return; + } + + collectionCustomizer.Key(km => km.Column(fromMany.Name + "Id")); + } + protected void ManyToManyInCollectionTable(IModelInspector modelInspector, PropertyPath member, ICollectionPropertiesMapper collectionCustomizer) { System.Type propertyType = member.LocalMember.GetPropertyOrFieldType(); Added: trunk/nhibernate/src/NHibernate.Test/MappingByCode/ConventionModelMapperTests/ManyToManyKeyIdColumnTests.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/MappingByCode/ConventionModelMapperTests/ManyToManyKeyIdColumnTests.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/MappingByCode/ConventionModelMapperTests/ManyToManyKeyIdColumnTests.cs 2011-04-13 11:48:08 UTC (rev 5684) @@ -0,0 +1,101 @@ +using System.Collections.Generic; +using System.Linq; +using NHibernate.Cfg.MappingSchema; +using NHibernate.Mapping.ByCode; +using NUnit.Framework; +using SharpTestsEx; + +namespace NHibernate.Test.MappingByCode.ConventionModelMapperTests +{ + public class ManyToManyKeyIdColumnTests + { + private class MyClass + { + public int Id { get; set; } + public ICollection<MyBidirect> MyBidirects { get; set; } + public IDictionary<MyBidirect, string> MapKey { get; set; } + public IDictionary<string, MyBidirect> MapValue { get; set; } + public MyComponent MyComponent { get; set; } + } + + private class MyComponent + { + public ICollection<MyBidirect> MyBidirects { get; set; } + } + + private class MyBidirect + { + public int Id { get; set; } + public ICollection<MyClass> MyClasses { get; set; } + } + + private HbmMapping GetModelMapping() + { + var mapper = new ConventionModelMapper(); + mapper.Class<MyClass>(map => + { + map.Bag(mc => mc.MyBidirects, c => { }, rel => rel.ManyToMany()); + map.Map(mc => mc.MapKey, c => { }, mk => mk.ManyToMany(), mv => { }); + map.Map(mc => mc.MapValue, c => { }, mk => { }, mv => mv.ManyToMany()); + }); + mapper.Class<MyBidirect>(map => + { + map.Bag(mc => mc.MyClasses, c => { }, rel => rel.ManyToMany()); + }); + mapper.Component<MyComponent>(map => + { + map.Bag(mc => mc.MyBidirects, c => { }, rel => rel.ManyToMany()); + }); + return mapper.CompileMappingFor(new[] { typeof(MyClass), typeof(MyBidirect) }); + } + + [Test] + public void WhenManyToManyCollectionThenApplyTableAlphabetical() + { + HbmMapping mapping = GetModelMapping(); + + var hbmMyClass = mapping.RootClasses.Where(x => x.Name.Contains("MyClass")).Single(); + var hbmMyBidirect = mapping.RootClasses.Where(x => x.Name.Contains("MyBidirect")).Single(); + + var hbmBagMyClass = hbmMyClass.Properties.Where(p => p.Name == "MyBidirects").OfType<HbmBag>().Single(); + var hbmBagMyBidirect = hbmMyBidirect.Properties.Where(p => p.Name == "MyClasses").OfType<HbmBag>().Single(); + + hbmBagMyClass.Key.column1.Should().Be("MyClassId"); + hbmBagMyBidirect.Key.column1.Should().Be("MyBidirectId"); + } + + [Test] + public void WhenRelationDeclaredAsManyToManyForDictionaryKeyThenNoMatch() + { + HbmMapping mapping = GetModelMapping(); + + var hbmMyClass = mapping.RootClasses.Where(x => x.Name.Contains("MyClass")).Single(); + var hbmMapKey = hbmMyClass.Properties.Where(p => p.Name == "MapKey").OfType<HbmMap>().Single(); + + hbmMapKey.Key.Columns.Single().name.Should().Not.Be("MyClassId"); + } + + [Test] + public void WhenRelationDeclaredAsManyToManyForDictionaryValueThenMatch() + { + HbmMapping mapping = GetModelMapping(); + + var hbmMyClass = mapping.RootClasses.Where(x => x.Name.Contains("MyClass")).Single(); + var hbmMapValue = hbmMyClass.Properties.Where(p => p.Name == "MapValue").OfType<HbmMap>().Single(); + + hbmMapValue.Key.column1.Should().Be("MyClassId"); + } + + [Test] + public void WhenManyToManyCollectionInsideComponentThenApplyFromEntityToEntity() + { + HbmMapping mapping = GetModelMapping(); + + var hbmMyClass = mapping.RootClasses.Where(x => x.Name.Contains("MyClass")).Single(); + var hbmMyComponent = hbmMyClass.Properties.Where(p => p.Name == "MyComponent").OfType<HbmComponent>().Single(); + var hbmBagMyClass = hbmMyComponent.Properties.Where(p => p.Name == "MyBidirects").OfType<HbmBag>().Single(); + + hbmBagMyClass.Key.column1.Should().Be("MyClassId"); + } + } +} \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2011-04-13 04:15:56 UTC (rev 5683) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2011-04-13 11:48:08 UTC (rev 5684) @@ -513,6 +513,7 @@ <Compile Include="Logging\LoggerProviderTest.cs" /> <Compile Include="MappingByCode\ConventionModelMapperTests\JoinedSubclassKeyAsRootIdColumnTest.cs" /> <Compile Include="MappingByCode\ConventionModelMapperTests\ManyToManyInCollectionTableTests.cs" /> + <Compile Include="MappingByCode\ConventionModelMapperTests\ManyToManyKeyIdColumnTests.cs" /> <Compile Include="MappingByCode\ConventionModelMapperTests\PropertyColumnNameTests.cs" /> <Compile Include="MappingByCode\ExpliticMappingTests\BagOfNestedComponentsWithParentTest.cs" /> <Compile Include="MappingByCode\ExpliticMappingTests\ClassWithComponentsTest.cs" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <pa...@us...> - 2011-04-13 04:16:02
|
Revision: 5683 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5683&view=rev Author: patearl Date: 2011-04-13 04:15:56 +0000 (Wed, 13 Apr 2011) Log Message: ----------- Tests: Deal with the fact that PostgreSQL doesn't support null UTF characters. Modified Paths: -------------- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/BasicClassFixture.cs trunk/nhibernate/src/NHibernate.Test/TestDialect.cs trunk/nhibernate/src/NHibernate.Test/TestDialects/PostgreSQL82TestDialect.cs Modified: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/BasicClassFixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/BasicClassFixture.cs 2011-04-12 22:59:26 UTC (rev 5682) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/BasicClassFixture.cs 2011-04-13 04:15:56 UTC (rev 5683) @@ -33,6 +33,8 @@ using (ITransaction tx = s.BeginTransaction()) { BasicClass bc = new BasicClass(); + if (!TestDialect.SupportsNullCharactersInUtfStrings) + bc.CharacterProperty = 'a'; bc.Id = 1; bc.ValueOfPrivateField = 5; s.Save(bc); @@ -56,6 +58,8 @@ using (ITransaction tx = s.BeginTransaction()) { BasicClass bc = new BasicClass(); + if (!TestDialect.SupportsNullCharactersInUtfStrings) + bc.CharacterProperty = 'a'; bc.Id = 1; s.Save(bc); tx.Commit(); @@ -819,6 +823,8 @@ ISession s = OpenSession(); ITransaction t = s.BeginTransaction(); BasicClass bc = new BasicClass(); + if (!TestDialect.SupportsNullCharactersInUtfStrings) + bc.CharacterProperty = 'a'; int id = 1; Modified: trunk/nhibernate/src/NHibernate.Test/TestDialect.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/TestDialect.cs 2011-04-12 22:59:26 UTC (rev 5682) +++ trunk/nhibernate/src/NHibernate.Test/TestDialect.cs 2011-04-13 04:15:56 UTC (rev 5683) @@ -47,6 +47,8 @@ public virtual bool HasBrokenDecimalType { get { return false; } } + public virtual bool SupportsNullCharactersInUtfStrings { get { return true; } } + public virtual bool SupportsSelectForUpdateOnOuterJoin { get { return true; } } public virtual bool SupportsHavingWithoutGroupBy { get { return true; } } Modified: trunk/nhibernate/src/NHibernate.Test/TestDialects/PostgreSQL82TestDialect.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/TestDialects/PostgreSQL82TestDialect.cs 2011-04-12 22:59:26 UTC (rev 5682) +++ trunk/nhibernate/src/NHibernate.Test/TestDialects/PostgreSQL82TestDialect.cs 2011-04-13 04:15:56 UTC (rev 5683) @@ -16,5 +16,10 @@ { get { return false; } } + + public override bool SupportsNullCharactersInUtfStrings + { + get { return false; } + } } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2011-04-12 22:59:32
|
Revision: 5682 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5682&view=rev Author: fabiomaulo Date: 2011-04-12 22:59:26 +0000 (Tue, 12 Apr 2011) Log Message: ----------- ConventionModelMapper with convention for many-to-many table Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Mapping/ByCode/ConventionModelMapper.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/PropertyPathExtensions.cs trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate.Test/MappingByCode/ConventionModelMapperTests/ManyToManyInCollectionTableTests.cs Modified: trunk/nhibernate/src/NHibernate/Mapping/ByCode/ConventionModelMapper.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Mapping/ByCode/ConventionModelMapper.cs 2011-04-12 19:16:13 UTC (rev 5681) +++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/ConventionModelMapper.cs 2011-04-12 22:59:26 UTC (rev 5682) @@ -17,8 +17,30 @@ { BeforeMapJoinedSubclass += JoinedSubclassKeyAsRootIdColumn; BeforeMapProperty += PropertyColumnName; + BeforeMapList += ManyToManyInCollectionTable; + BeforeMapBag += ManyToManyInCollectionTable; + BeforeMapSet += ManyToManyInCollectionTable; + BeforeMapMap += ManyToManyInCollectionTable; } + protected void ManyToManyInCollectionTable(IModelInspector modelInspector, PropertyPath member, ICollectionPropertiesMapper collectionCustomizer) + { + System.Type propertyType = member.LocalMember.GetPropertyOrFieldType(); + + System.Type fromMany = member.GetContainerEntity(modelInspector); + System.Type toMany = propertyType.DetermineCollectionElementOrDictionaryValueType(); + if(!modelInspector.IsEntity(toMany)) + { + // does not apply when the relation is on the key of the dictionary + // Note: a dictionary may have relation with 3 entities; in this handler we are covering only relations on values + return; + } + var relation = new[] { fromMany, toMany }; + var twoEntitiesNames = (from relationOn in relation orderby relationOn.Name select relationOn.Name).ToArray(); + + collectionCustomizer.Table(string.Format("{0}To{1}", twoEntitiesNames[0], twoEntitiesNames[1])); + } + protected void PropertyColumnName(IModelInspector modelInspector, PropertyPath member, IPropertyMapper propertyCustomizer) { if (member.PreviousPath == null || member.LocalMember == null) @@ -36,7 +58,7 @@ protected void JoinedSubclassKeyAsRootIdColumn(IModelInspector modelInspector, System.Type type, IJoinedSubclassAttributesMapper joinedSubclassCustomizer) { - var idMember = type.GetProperties().Cast<MemberInfo>().Concat(type.GetFields()).FirstOrDefault(mi => ModelInspector.IsPersistentId(mi.GetMemberFromDeclaringType())); + var idMember = type.GetProperties().Cast<MemberInfo>().Concat(type.GetFields()).FirstOrDefault(mi => modelInspector.IsPersistentId(mi.GetMemberFromDeclaringType())); if (idMember != null) { joinedSubclassCustomizer.Key(km => km.Column(idMember.Name)); Modified: trunk/nhibernate/src/NHibernate/Mapping/ByCode/PropertyPathExtensions.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Mapping/ByCode/PropertyPathExtensions.cs 2011-04-12 19:16:13 UTC (rev 5681) +++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/PropertyPathExtensions.cs 2011-04-12 22:59:26 UTC (rev 5682) @@ -7,6 +7,16 @@ { public static class PropertyPathExtensions { + public static System.Type GetContainerEntity(this PropertyPath propertyPath, IModelInspector domainInspector) + { + PropertyPath analizing = propertyPath; + while (analizing.PreviousPath != null && !domainInspector.IsEntity(analizing.LocalMember.ReflectedType)) + { + analizing = analizing.PreviousPath; + } + return analizing.LocalMember.ReflectedType; + } + public static string ToColumnName(this PropertyPath propertyPath, string pathSeparator) { return propertyPath.ToString().Replace(".", pathSeparator); Added: trunk/nhibernate/src/NHibernate.Test/MappingByCode/ConventionModelMapperTests/ManyToManyInCollectionTableTests.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/MappingByCode/ConventionModelMapperTests/ManyToManyInCollectionTableTests.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/MappingByCode/ConventionModelMapperTests/ManyToManyInCollectionTableTests.cs 2011-04-12 22:59:26 UTC (rev 5682) @@ -0,0 +1,101 @@ +using System.Collections.Generic; +using System.Linq; +using NHibernate.Cfg.MappingSchema; +using NHibernate.Mapping.ByCode; +using NUnit.Framework; +using SharpTestsEx; + +namespace NHibernate.Test.MappingByCode.ConventionModelMapperTests +{ + public class ManyToManyInCollectionTableTests + { + private class MyClass + { + public int Id { get; set; } + public ICollection<MyBidirect> MyBidirects { get; set; } + public IDictionary<MyBidirect, string> MapKey { get; set; } + public IDictionary<string, MyBidirect> MapValue { get; set; } + public MyComponent MyComponent { get; set; } + } + + private class MyComponent + { + public ICollection<MyBidirect> MyBidirects { get; set; } + } + + private class MyBidirect + { + public int Id { get; set; } + public ICollection<MyClass> MyClasses { get; set; } + } + + private HbmMapping GetModelMapping() + { + var mapper = new ConventionModelMapper(); + mapper.Class<MyClass>(map => + { + map.Bag(mc => mc.MyBidirects, c => { }, rel => rel.ManyToMany()); + map.Map(mc => mc.MapKey, c => { }, mk => mk.ManyToMany(), mv => { }); + map.Map(mc => mc.MapValue, c => { }, mk => { }, mv => mv.ManyToMany()); + }); + mapper.Class<MyBidirect>(map => + { + map.Bag(mc => mc.MyClasses, c => { }, rel => rel.ManyToMany()); + }); + mapper.Component<MyComponent>(map => + { + map.Bag(mc => mc.MyBidirects, c => { }, rel => rel.ManyToMany()); + }); + return mapper.CompileMappingFor(new[] {typeof (MyClass), typeof (MyBidirect)}); + } + + [Test] + public void WhenManyToManyCollectionThenApplyTableAlphabetical() + { + HbmMapping mapping = GetModelMapping(); + + var hbmMyClass = mapping.RootClasses.Where(x => x.Name.Contains("MyClass")).Single(); + var hbmMyBidirect = mapping.RootClasses.Where(x => x.Name.Contains("MyBidirect")).Single(); + + var hbmBagMyClass = hbmMyClass.Properties.Where(p => p.Name == "MyBidirects").OfType<HbmBag>().Single(); + var hbmBagMyBidirect = hbmMyBidirect.Properties.Where(p => p.Name == "MyClasses").OfType<HbmBag>().Single(); + + hbmBagMyClass.Table.Should().Be("MyBidirectToMyClass"); + hbmBagMyBidirect.Table.Should().Be(hbmBagMyClass.Table); + } + + [Test] + public void WhenRelationDeclaredAsManyToManyForDictionaryKeyThenNoMatch() + { + HbmMapping mapping = GetModelMapping(); + + var hbmMyClass = mapping.RootClasses.Where(x => x.Name.Contains("MyClass")).Single(); + var hbmMapKey = hbmMyClass.Properties.Where(p => p.Name == "MapKey").OfType<HbmMap>().Single(); + + hbmMapKey.Table.Should().Be.Null(); + } + + [Test] + public void WhenRelationDeclaredAsManyToManyForDictionaryValueThenMatch() + { + HbmMapping mapping = GetModelMapping(); + + var hbmMyClass = mapping.RootClasses.Where(x => x.Name.Contains("MyClass")).Single(); + var hbmMapValue = hbmMyClass.Properties.Where(p => p.Name == "MapValue").OfType<HbmMap>().Single(); + + hbmMapValue.Table.Should().Be("MyBidirectToMyClass"); + } + + [Test] + public void WhenManyToManyCollectionInsideComponentThenApplyFromEntityToEntity() + { + HbmMapping mapping = GetModelMapping(); + + var hbmMyClass = mapping.RootClasses.Where(x => x.Name.Contains("MyClass")).Single(); + var hbmMyComponent = hbmMyClass.Properties.Where(p => p.Name == "MyComponent").OfType<HbmComponent>().Single(); + var hbmBagMyClass = hbmMyComponent.Properties.Where(p => p.Name == "MyBidirects").OfType<HbmBag>().Single(); + + hbmBagMyClass.Table.Should().Be("MyBidirectToMyClass"); + } + } +} \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2011-04-12 19:16:13 UTC (rev 5681) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2011-04-12 22:59:26 UTC (rev 5682) @@ -512,6 +512,7 @@ <Compile Include="Logging\Log4NetLoggerTest.cs" /> <Compile Include="Logging\LoggerProviderTest.cs" /> <Compile Include="MappingByCode\ConventionModelMapperTests\JoinedSubclassKeyAsRootIdColumnTest.cs" /> + <Compile Include="MappingByCode\ConventionModelMapperTests\ManyToManyInCollectionTableTests.cs" /> <Compile Include="MappingByCode\ConventionModelMapperTests\PropertyColumnNameTests.cs" /> <Compile Include="MappingByCode\ExpliticMappingTests\BagOfNestedComponentsWithParentTest.cs" /> <Compile Include="MappingByCode\ExpliticMappingTests\ClassWithComponentsTest.cs" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2011-04-12 19:16:20
|
Revision: 5681 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5681&view=rev Author: fabiomaulo Date: 2011-04-12 19:16:13 +0000 (Tue, 12 Apr 2011) Log Message: ----------- Ups Modified Paths: -------------- trunk/nhibernate/src/NHibernate.Test/MappingByCode/MixAutomapping/PropertiesExclusionTests.cs Modified: trunk/nhibernate/src/NHibernate.Test/MappingByCode/MixAutomapping/PropertiesExclusionTests.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/MappingByCode/MixAutomapping/PropertiesExclusionTests.cs 2011-04-12 18:37:57 UTC (rev 5680) +++ trunk/nhibernate/src/NHibernate.Test/MappingByCode/MixAutomapping/PropertiesExclusionTests.cs 2011-04-12 19:16:13 UTC (rev 5681) @@ -80,9 +80,11 @@ } [Test] - public void IncludesFields() + public void IncludesFieldsWhenExplicitDeclared() { var autoinspector = new SimpleModelInspector(); + var mapper = new ModelMapper(autoinspector); + mapper.Class<MyEntity>(map => map.Property(ForClass<MyEntity>.Field("pizza"), x => { })); var inspector = (IModelInspector)autoinspector; var pi = typeof(MyEntity).GetField("pizza", BindingFlags.Instance | BindingFlags.NonPublic); @@ -90,6 +92,16 @@ } [Test] + public void DoesNotIncludesFieldsByDefault() + { + var autoinspector = new SimpleModelInspector(); + var inspector = (IModelInspector)autoinspector; + + var pi = typeof(MyEntity).GetField("pizza", BindingFlags.Instance | BindingFlags.NonPublic); + inspector.IsPersistentProperty(pi).Should().Be.False(); + } + + [Test] public void IncludesAutoprop() { var autoinspector = new SimpleModelInspector(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2011-04-12 18:38:03
|
Revision: 5680 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5680&view=rev Author: fabiomaulo Date: 2011-04-12 18:37:57 +0000 (Tue, 12 Apr 2011) Log Message: ----------- ConventionModelMapper with convention for property column Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Mapping/ByCode/ConventionModelMapper.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/PropertyPathExtensions.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/SimpleModelInspector.cs trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate.Test/MappingByCode/ConventionModelMapperTests/PropertyColumnNameTests.cs Modified: trunk/nhibernate/src/NHibernate/Mapping/ByCode/ConventionModelMapper.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Mapping/ByCode/ConventionModelMapper.cs 2011-04-12 17:55:24 UTC (rev 5679) +++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/ConventionModelMapper.cs 2011-04-12 18:37:57 UTC (rev 5680) @@ -16,8 +16,24 @@ protected virtual void AppendDefaultEvents() { BeforeMapJoinedSubclass += JoinedSubclassKeyAsRootIdColumn; + BeforeMapProperty += PropertyColumnName; } + protected void PropertyColumnName(IModelInspector modelInspector, PropertyPath member, IPropertyMapper propertyCustomizer) + { + if (member.PreviousPath == null || member.LocalMember == null) + { + return; + } + if (member.PreviousPath.LocalMember.GetPropertyOrFieldType().IsGenericCollection()) + { + return; + } + + var pathToMap = member.DepureFirstLevelIfCollection(); + propertyCustomizer.Column(pathToMap.ToColumnName()); + } + protected void JoinedSubclassKeyAsRootIdColumn(IModelInspector modelInspector, System.Type type, IJoinedSubclassAttributesMapper joinedSubclassCustomizer) { var idMember = type.GetProperties().Cast<MemberInfo>().Concat(type.GetFields()).FirstOrDefault(mi => ModelInspector.IsPersistentId(mi.GetMemberFromDeclaringType())); Modified: trunk/nhibernate/src/NHibernate/Mapping/ByCode/PropertyPathExtensions.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Mapping/ByCode/PropertyPathExtensions.cs 2011-04-12 17:55:24 UTC (rev 5679) +++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/PropertyPathExtensions.cs 2011-04-12 18:37:57 UTC (rev 5680) @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Linq; using System.Reflection; namespace NHibernate.Mapping.ByCode @@ -43,5 +44,19 @@ analizing = analizing.PreviousPath; } while (analizing != null); } + + public static PropertyPath DepureFirstLevelIfCollection(this PropertyPath source) + { + // when the component is used as elements of a collection, the name of the property representing + // the collection itself may be ignored since each collection will have its own table. + // Note: In some cases may be a problem. + const int penultimateOffset = 2; + if (!source.GetRootMember().GetPropertyOrFieldType().IsGenericCollection()) + { + return source; + } + var paths = source.InverseProgressivePath().ToArray(); + return paths[paths.Length - penultimateOffset]; + } } } \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate/Mapping/ByCode/SimpleModelInspector.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Mapping/ByCode/SimpleModelInspector.cs 2011-04-12 17:55:24 UTC (rev 5679) +++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/SimpleModelInspector.cs 2011-04-12 18:37:57 UTC (rev 5680) @@ -48,7 +48,7 @@ isTablePerClass = (t, declared) => declared || MatchTablePerClass(t); isPersistentId = (m, declared) => declared || MatchPoIdPattern(m); isComponent = (t, declared) => declared || MatchComponentPattern(t); - isPersistentProperty = (m, declared) => declared || MatchNoReadOnlyPropertyPattern(m); + isPersistentProperty = (m, declared) => declared || ((m is PropertyInfo) && MatchNoReadOnlyPropertyPattern(m)); isSet = (m, declared) => declared || MatchCollection(m, MatchSetMember); isArray = (m, declared) => declared || MatchCollection(m, MatchArrayMember); isBag = (m, declared) => declared || MatchCollection(m, MatchBagMember); Added: trunk/nhibernate/src/NHibernate.Test/MappingByCode/ConventionModelMapperTests/PropertyColumnNameTests.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/MappingByCode/ConventionModelMapperTests/PropertyColumnNameTests.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/MappingByCode/ConventionModelMapperTests/PropertyColumnNameTests.cs 2011-04-12 18:37:57 UTC (rev 5680) @@ -0,0 +1,63 @@ +using System.Collections.Generic; +using System.Linq; +using NHibernate.Cfg.MappingSchema; +using NHibernate.Mapping.ByCode; +using NUnit.Framework; +using SharpTestsEx; + +namespace NHibernate.Test.MappingByCode.ConventionModelMapperTests +{ + public class PropertyColumnNameTests + { + private class MyClass + { + public int Id { get; set; } + public string Fake1 { get; set; } + } + + private class MyClassWithComponent + { + public int Id { get; set; } + public MyComponent Component1 { get; set; } + public IEnumerable<MyComponent> Components { get; set; } + } + + private class MyComponent + { + public string Fake0 { get; set; } + } + + [Test] + public void WhenAtClassLevelThenNoMatch() + { + var mapper = new ConventionModelMapper(); + var mapping = mapper.CompileMappingFor(new[] { typeof(MyClass) }); + var hbmClass = mapping.RootClasses[0]; + var hbmProperty = hbmClass.Properties.OfType<HbmProperty>().Single(x => x.Name == "Fake1"); + hbmProperty.Columns.Should().Be.Empty(); + } + + [Test] + public void WhenFirstLevelIsCollectionThenNoMatch() + { + var mapper = new ConventionModelMapper(); + var mapping = mapper.CompileMappingFor(new[] { typeof(MyClassWithComponent) }); + var hbmClass = mapping.RootClasses[0]; + var hbmBag = hbmClass.Properties.OfType<HbmBag>().Single(x => x.Name == "Components"); + var hbmCompositeElement = (HbmCompositeElement) hbmBag.ElementRelationship; + var hbmProperty = hbmCompositeElement.Properties.OfType<HbmProperty>().Single(x => x.Name == "Fake0"); + hbmProperty.Columns.Should().Be.Empty(); + } + + [Test] + public void WhenAtComponentLevelThenMatch() + { + var mapper = new ConventionModelMapper(); + var mapping = mapper.CompileMappingFor(new[] { typeof(MyClassWithComponent) }); + var hbmClass = mapping.RootClasses[0]; + var hbmComponent = hbmClass.Properties.OfType<HbmComponent>().Single(); + var hbmProperty = hbmComponent.Properties.OfType<HbmProperty>().Single(x => x.Name == "Fake0"); + hbmProperty.Columns.Single().name.Should().Be("Component1Fake0"); + } + } +} \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2011-04-12 17:55:24 UTC (rev 5679) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2011-04-12 18:37:57 UTC (rev 5680) @@ -512,6 +512,7 @@ <Compile Include="Logging\Log4NetLoggerTest.cs" /> <Compile Include="Logging\LoggerProviderTest.cs" /> <Compile Include="MappingByCode\ConventionModelMapperTests\JoinedSubclassKeyAsRootIdColumnTest.cs" /> + <Compile Include="MappingByCode\ConventionModelMapperTests\PropertyColumnNameTests.cs" /> <Compile Include="MappingByCode\ExpliticMappingTests\BagOfNestedComponentsWithParentTest.cs" /> <Compile Include="MappingByCode\ExpliticMappingTests\ClassWithComponentsTest.cs" /> <Compile Include="MappingByCode\ExpliticMappingTests\ConformistMappingRegistrationTests\ClassMappingRegistrationTest.cs" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2011-04-12 17:55:31
|
Revision: 5679 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5679&view=rev Author: fabiomaulo Date: 2011-04-12 17:55:24 +0000 (Tue, 12 Apr 2011) Log Message: ----------- Moved classes to the "public" namespace Modified Paths: -------------- trunk/nhibernate/src/NHibernate/NHibernate.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate/Mapping/ByCode/PropertyPath.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/PropertyPathExtensions.cs Removed Paths: ------------- trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/PropertyPath.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/PropertyPathExtensions.cs Deleted: trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/PropertyPath.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/PropertyPath.cs 2011-04-12 17:50:33 UTC (rev 5678) +++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/PropertyPath.cs 2011-04-12 17:55:24 UTC (rev 5679) @@ -1,84 +0,0 @@ -using System; -using System.Reflection; - -namespace NHibernate.Mapping.ByCode.Impl -{ - public class PropertyPath - { - private readonly int hashCode; - private readonly MemberInfo localMember; - private readonly PropertyPath previousPath; - - public PropertyPath(PropertyPath previousPath, MemberInfo localMember) - { - if (localMember == null) - { - throw new ArgumentNullException("localMember"); - } - this.previousPath = previousPath; - this.localMember = localMember; - hashCode = localMember.GetHashCode() ^ (previousPath != null ? previousPath.GetHashCode() : 41); - } - - public PropertyPath PreviousPath - { - get { return previousPath; } - } - - public MemberInfo LocalMember - { - get { return localMember; } - } - - public MemberInfo GetRootMember() - { - PropertyPath analizing = this; - while (analizing.previousPath != null) - { - analizing = analizing.previousPath; - } - return analizing.localMember; - } - - public override bool Equals(object obj) - { - if (ReferenceEquals(null, obj)) - { - return false; - } - if (ReferenceEquals(this, obj)) - { - return true; - } - return Equals(obj as PropertyPath); - } - - public bool Equals(PropertyPath other) - { - if (ReferenceEquals(null, other)) - { - return false; - } - if (ReferenceEquals(this, other)) - { - return true; - } - return hashCode == other.GetHashCode(); - } - - public override int GetHashCode() - { - return hashCode; - } - - public string ToColumnName() - { - return PreviousPath == null ? LocalMember.Name : PreviousPath.ToColumnName() + LocalMember.Name; - } - - public override string ToString() - { - return PreviousPath == null ? LocalMember.Name : PreviousPath + "." + LocalMember.Name; - } - } -} \ No newline at end of file Deleted: trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/PropertyPathExtensions.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/PropertyPathExtensions.cs 2011-04-12 17:50:33 UTC (rev 5678) +++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/PropertyPathExtensions.cs 2011-04-12 17:55:24 UTC (rev 5679) @@ -1,47 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Reflection; - -namespace NHibernate.Mapping.ByCode.Impl -{ - public static class PropertyPathExtensions - { - public static string ToColumnName(this PropertyPath propertyPath, string pathSeparator) - { - return propertyPath.ToString().Replace(".", pathSeparator); - } - - /// <summary> - /// Provide the list of progressive-paths - /// </summary> - /// <param name="source"></param> - /// <returns> - /// Given a path as : Pl1.Pl2.Pl3.Pl4.Pl5 returns paths-sequence as: - /// Pl5 - /// Pl4.Pl5 - /// Pl3.Pl4.Pl5 - /// Pl2.Pl3.Pl4.Pl5 - /// Pl1.Pl2.Pl3.Pl4.Pl5 - /// </returns> - public static IEnumerable<PropertyPath> InverseProgressivePath(this PropertyPath source) - { - if (source == null) - { - throw new ArgumentNullException("source"); - } - PropertyPath analizing = source; - var returnLocalMembers = new List<MemberInfo>(10); - do - { - returnLocalMembers.Add(analizing.LocalMember); - PropertyPath progressivePath = null; - for (int i = returnLocalMembers.Count - 1; i >= 0; i--) - { - progressivePath = new PropertyPath(progressivePath, returnLocalMembers[i]); - } - yield return progressivePath; - analizing = analizing.PreviousPath; - } while (analizing != null); - } - } -} \ No newline at end of file Copied: trunk/nhibernate/src/NHibernate/Mapping/ByCode/PropertyPath.cs (from rev 5676, trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/PropertyPath.cs) =================================================================== --- trunk/nhibernate/src/NHibernate/Mapping/ByCode/PropertyPath.cs (rev 0) +++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/PropertyPath.cs 2011-04-12 17:55:24 UTC (rev 5679) @@ -0,0 +1,84 @@ +using System; +using System.Reflection; + +namespace NHibernate.Mapping.ByCode +{ + public class PropertyPath + { + private readonly int hashCode; + private readonly MemberInfo localMember; + private readonly PropertyPath previousPath; + + public PropertyPath(PropertyPath previousPath, MemberInfo localMember) + { + if (localMember == null) + { + throw new ArgumentNullException("localMember"); + } + this.previousPath = previousPath; + this.localMember = localMember; + hashCode = localMember.GetHashCode() ^ (previousPath != null ? previousPath.GetHashCode() : 41); + } + + public PropertyPath PreviousPath + { + get { return previousPath; } + } + + public MemberInfo LocalMember + { + get { return localMember; } + } + + public MemberInfo GetRootMember() + { + PropertyPath analizing = this; + while (analizing.previousPath != null) + { + analizing = analizing.previousPath; + } + return analizing.localMember; + } + + public override bool Equals(object obj) + { + if (ReferenceEquals(null, obj)) + { + return false; + } + if (ReferenceEquals(this, obj)) + { + return true; + } + return Equals(obj as PropertyPath); + } + + public bool Equals(PropertyPath other) + { + if (ReferenceEquals(null, other)) + { + return false; + } + if (ReferenceEquals(this, other)) + { + return true; + } + return hashCode == other.GetHashCode(); + } + + public override int GetHashCode() + { + return hashCode; + } + + public string ToColumnName() + { + return PreviousPath == null ? LocalMember.Name : PreviousPath.ToColumnName() + LocalMember.Name; + } + + public override string ToString() + { + return PreviousPath == null ? LocalMember.Name : PreviousPath + "." + LocalMember.Name; + } + } +} \ No newline at end of file Copied: trunk/nhibernate/src/NHibernate/Mapping/ByCode/PropertyPathExtensions.cs (from rev 5676, trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/PropertyPathExtensions.cs) =================================================================== --- trunk/nhibernate/src/NHibernate/Mapping/ByCode/PropertyPathExtensions.cs (rev 0) +++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/PropertyPathExtensions.cs 2011-04-12 17:55:24 UTC (rev 5679) @@ -0,0 +1,47 @@ +using System; +using System.Collections.Generic; +using System.Reflection; + +namespace NHibernate.Mapping.ByCode +{ + public static class PropertyPathExtensions + { + public static string ToColumnName(this PropertyPath propertyPath, string pathSeparator) + { + return propertyPath.ToString().Replace(".", pathSeparator); + } + + /// <summary> + /// Provide the list of progressive-paths + /// </summary> + /// <param name="source"></param> + /// <returns> + /// Given a path as : Pl1.Pl2.Pl3.Pl4.Pl5 returns paths-sequence as: + /// Pl5 + /// Pl4.Pl5 + /// Pl3.Pl4.Pl5 + /// Pl2.Pl3.Pl4.Pl5 + /// Pl1.Pl2.Pl3.Pl4.Pl5 + /// </returns> + public static IEnumerable<PropertyPath> InverseProgressivePath(this PropertyPath source) + { + if (source == null) + { + throw new ArgumentNullException("source"); + } + PropertyPath analizing = source; + var returnLocalMembers = new List<MemberInfo>(10); + do + { + returnLocalMembers.Add(analizing.LocalMember); + PropertyPath progressivePath = null; + for (int i = returnLocalMembers.Count - 1; i >= 0; i--) + { + progressivePath = new PropertyPath(progressivePath, returnLocalMembers[i]); + } + yield return progressivePath; + analizing = analizing.PreviousPath; + } while (analizing != null); + } + } +} \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate/NHibernate.csproj =================================================================== --- trunk/nhibernate/src/NHibernate/NHibernate.csproj 2011-04-12 17:50:33 UTC (rev 5678) +++ trunk/nhibernate/src/NHibernate/NHibernate.csproj 2011-04-12 17:55:24 UTC (rev 5679) @@ -409,8 +409,8 @@ <Compile Include="Mapping\ByCode\Impl\OneToManyMapper.cs" /> <Compile Include="Mapping\ByCode\Impl\OneToOneMapper.cs" /> <Compile Include="Mapping\ByCode\Impl\PropertyMapper.cs" /> - <Compile Include="Mapping\ByCode\Impl\PropertyPath.cs" /> - <Compile Include="Mapping\ByCode\Impl\PropertyPathExtensions.cs" /> + <Compile Include="Mapping\ByCode\PropertyPath.cs" /> + <Compile Include="Mapping\ByCode\PropertyPathExtensions.cs" /> <Compile Include="Mapping\ByCode\Impl\SetMapper.cs" /> <Compile Include="Mapping\ByCode\Impl\SubclassMapper.cs" /> <Compile Include="Mapping\ByCode\Impl\TypeNameUtil.cs" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |