Skip to content

Commit ef6bb9a

Browse files
rjpereshazzik
authored andcommitted
NH-3527
1 parent dbfd3e3 commit ef6bb9a

File tree

4 files changed

+31
-1
lines changed

4 files changed

+31
-1
lines changed

src/NHibernate.Test/MappingByCode/ExplicitMappingTests/BasicMappingOfSimpleClass.cs

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
using NHibernate.Mapping.ByCode;
77
using NUnit.Framework;
88

9-
namespace NHibernate.Test.MappingByCode.ExpliticMappingTests
9+
namespace NHibernate.Test.MappingByCode.ExplicitMappingTests
1010
{
1111
public class BasicMappingOfSimpleClass
1212
{
@@ -16,6 +16,24 @@ public class MyClass
1616
public string Something { get; set; }
1717
}
1818

19+
[Test]
20+
public void AbstractClass()
21+
{
22+
var mapper = new ModelMapper();
23+
mapper.Class<MyClass>(ca =>
24+
{
25+
ca.Abstract(true);
26+
ca.Id(x => x.Id, map =>
27+
{
28+
map.Column("MyClassId");
29+
map.Generator(Generators.HighLow, gmap => gmap.Params(new { max_low = 100 }));
30+
});
31+
ca.Property(x => x.Something, map => map.Length(150));
32+
});
33+
var hbmMapping = mapper.CompileMappingFor(new[] { typeof(MyClass) });
34+
Assert.AreEqual(hbmMapping.RootClasses[0].@abstract, true);
35+
}
36+
1937
[Test]
2038
public void MapClassWithIdAndProperty()
2139
{

src/NHibernate/Mapping/ByCode/IClassMapper.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ public interface IClassAttributesMapper : IEntityAttributesMapper, IEntitySqlsMa
1313
void ComponentAsId(MemberInfo idProperty, Action<IComponentAsIdMapper> idMapper);
1414
void ComposedId(Action<IComposedIdMapper> idPropertiesMapping);
1515

16+
void Abstract(bool isAbstract);
1617
void Discriminator(Action<IDiscriminatorMapper> discriminatorMapping);
1718
void DiscriminatorValue(object value);
1819
void Table(string tableName);
@@ -53,6 +54,7 @@ public interface IClassAttributesMapper<TEntity> : IEntityAttributesMapper, IEnt
5354

5455
void ComposedId(Action<IComposedIdMapper<TEntity>> idPropertiesMapping);
5556

57+
void Abstract(bool isAbstract);
5658
void Discriminator(Action<IDiscriminatorMapper> discriminatorMapping);
5759
void DiscriminatorValue(object value);
5860
void Table(string tableName);

src/NHibernate/Mapping/ByCode/Impl/ClassMapper.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,12 @@ public Dictionary<string, IJoinMapper> JoinMappers
5959
}
6060

6161
#region Implementation of IClassMapper
62+
public void Abstract(bool isAbstract)
63+
{
64+
classMapping.@abstract = isAbstract;
65+
classMapping.abstractSpecified = true;
66+
}
67+
6268
public void OptimisticLock(OptimisticLockMode mode)
6369
{
6470
classMapping.optimisticlock = (HbmOptimisticLockMode)Enum.Parse(typeof(OptimisticLockMode), mode.ToString());

src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/ClassCustomizer.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,10 @@ private Dictionary<string, IJoinMapper<TEntity>> JoinCustomizers
2929
}
3030

3131
#region Implementation of IClassAttributesMapper<TEntity>
32+
public void Abstract(bool isAbstract)
33+
{
34+
CustomizersHolder.AddCustomizer(typeof(TEntity), (IClassMapper m) => m.Abstract(isAbstract));
35+
}
3236

3337
public void OptimisticLock(OptimisticLockMode mode)
3438
{

0 commit comments

Comments
 (0)