|
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.
|