From: <fab...@us...> - 2011-04-08 14:47:21
|
Revision: 5642 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5642&view=rev Author: fabiomaulo Date: 2011-04-08 14:47:15 +0000 (Fri, 08 Apr 2011) Log Message: ----------- -Fixed class without poid property/field -simplified API Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Mapping/ByCode/IClassMapper.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/ClassCustomizer.cs 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/IClassMapper.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Mapping/ByCode/IClassMapper.cs 2011-04-08 14:13:21 UTC (rev 5641) +++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/IClassMapper.cs 2011-04-08 14:47:15 UTC (rev 5642) @@ -34,7 +34,7 @@ public interface IClassAttributesMapper<TEntity> : IEntityAttributesMapper, IEntitySqlsMapper where TEntity : class { - void Id(Action<IIdMapper> idMapper); + void Id<TProperty>(Expression<Func<TEntity, TProperty>> idProperty); void Id<TProperty>(Expression<Func<TEntity, TProperty>> idProperty, Action<IIdMapper> idMapper); void Id(FieldInfo idProperty, Action<IIdMapper> idMapper); void Discriminator(Action<IDiscriminatorMapper> discriminatorMapping); Modified: trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/ClassCustomizer.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/ClassCustomizer.cs 2011-04-08 14:13:21 UTC (rev 5641) +++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/ClassCustomizer.cs 2011-04-08 14:47:15 UTC (rev 5642) @@ -27,21 +27,28 @@ #region Implementation of IClassAttributesMapper<TEntity> - public void Id(Action<IIdMapper> idMapper) + public void Id<TProperty>(Expression<Func<TEntity, TProperty>> idProperty) { - CustomizersHolder.AddCustomizer(typeof (TEntity), m => m.Id(idMapper)); + Id(idProperty, x => { }); } public void Id<TProperty>(Expression<Func<TEntity, TProperty>> idProperty, Action<IIdMapper> idMapper) { - MemberInfo member = TypeExtensions.DecodeMemberAccessExpression(idProperty); - ExplicitDeclarationsHolder.AddAsPoid(member); + MemberInfo member = null; + if (idProperty != null) + { + member = TypeExtensions.DecodeMemberAccessExpression(idProperty); + ExplicitDeclarationsHolder.AddAsPoid(member); + } CustomizersHolder.AddCustomizer(typeof (TEntity), m => m.Id(member, idMapper)); } public void Id(FieldInfo idProperty, Action<IIdMapper> idMapper) { - ExplicitDeclarationsHolder.AddAsPoid(idProperty); + if (idProperty != null) + { + ExplicitDeclarationsHolder.AddAsPoid(idProperty); + } CustomizersHolder.AddCustomizer(typeof(TEntity), m => m.Id(idProperty, idMapper)); } Modified: trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/IdMapper.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/IdMapper.cs 2011-04-08 14:13:21 UTC (rev 5641) +++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/IdMapper.cs 2011-04-08 14:47:15 UTC (rev 5642) @@ -75,6 +75,11 @@ private void ApplyGenerator(IGeneratorDef generator) { var hbmGenerator = new HbmGenerator {@class = generator.Class}; + if(hbmId.name == null) + { + // no member for the id + hbmId.type1 = generator.DefaultReturnType.GetNhTypeName(); + } object generatorParameters = generator.Params; if (generatorParameters != null) { Modified: trunk/nhibernate/src/NHibernate.Test/MappingByCode/ExpliticMappingTests/BasicMappingOfSimpleClass.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/MappingByCode/ExpliticMappingTests/BasicMappingOfSimpleClass.cs 2011-04-08 14:13:21 UTC (rev 5641) +++ trunk/nhibernate/src/NHibernate.Test/MappingByCode/ExpliticMappingTests/BasicMappingOfSimpleClass.cs 2011-04-08 14:47:15 UTC (rev 5642) @@ -1,3 +1,4 @@ +using System; using System.Linq; using NHibernate.Cfg.MappingSchema; using NHibernate.Mapping.ByCode; @@ -32,6 +33,24 @@ } [Test] + public void WhenMapClassWithoutIdThenApplyTypeOfGeneratorDef() + { + var mapper = new ModelMapper(); + mapper.Class<MyClass>(ca => ca.Id(null, map => + { + map.Column("MyClassId"); + map.Generator(Generators.HighLow, gmap => gmap.Params(new { max_low = 100 })); + })); + 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().Be(NHibernateUtil.Int32.Name); + } + + [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. |