Skip to content

Commit 5bfdd27

Browse files
committed
Merge branch 'NH-3415' of github.com:rjperes/nhibernate-core into rjperes-NH-3415
2 parents 4f7bad4 + bbb2245 commit 5bfdd27

File tree

3 files changed

+34
-6
lines changed

3 files changed

+34
-6
lines changed

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

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
using System;
2+
using System.Collections;
3+
using System.Collections.Generic;
24
using System.Linq;
35
using NHibernate.Cfg.MappingSchema;
46
using NHibernate.Mapping.ByCode;
@@ -32,6 +34,24 @@ public void MapClassWithIdAndProperty()
3234
ModelIsWellFormed(hbmMapping);
3335
}
3436

37+
[Test]
38+
public void MapClassWithIdAndPropertyWithParamsDictionary()
39+
{
40+
var mapper = new ModelMapper();
41+
mapper.Class<MyClass>(ca =>
42+
{
43+
ca.Id(x => x.Id, map =>
44+
{
45+
map.Column("MyClassId");
46+
//NH-3415
47+
map.Generator(Generators.HighLow, gmap => gmap.Params(new Dictionary<string, object> { { "max_low", 100 } }));
48+
});
49+
ca.Property(x => x.Something, map => map.Length(150));
50+
});
51+
var hbmMapping = mapper.CompileMappingFor(new[] { typeof(MyClass) });
52+
ModelIsWellFormed(hbmMapping);
53+
}
54+
3555
[Test]
3656
public void WhenMapClassWithoutIdThenApplyTypeOfGeneratorDef()
3757
{
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
1+
using System.Collections.Generic;
12
namespace NHibernate.Mapping.ByCode
23
{
34
public interface IGeneratorMapper
45
{
56
void Params(object generatorParameters);
7+
8+
void Params(IDictionary<string, object> generatorParameters);
69
}
710
}

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

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
using System.Collections.Generic;
12
using System.Linq;
23
using NHibernate.Cfg.MappingSchema;
34

@@ -15,17 +16,21 @@ public GeneratorMapper(HbmGenerator generator)
1516
#region Implementation of IGeneratorMapper
1617

1718
public void Params(object generatorParameters)
19+
{
20+
this.Params(generatorParameters.GetType().GetProperties().ToDictionary(x => x.Name, x => x.GetValue(generatorParameters, null)));
21+
}
22+
23+
public void Params(IDictionary<string, object> generatorParameters)
1824
{
1925
if (generatorParameters == null)
2026
{
2127
return;
2228
}
23-
generator.param = (from pi in generatorParameters.GetType().GetProperties()
24-
let pname = pi.Name
25-
let pvalue = pi.GetValue(generatorParameters, null)
26-
select
27-
new HbmParam
28-
{name = pname, Text = new[] {ReferenceEquals(pvalue, null) ? "null" : pvalue.ToString()}}).
29+
generator.param = (from pi in generatorParameters
30+
let pname = pi.Key
31+
let pvalue = pi.Value
32+
select
33+
new HbmParam { name = pname, Text = new[] { ReferenceEquals(pvalue, null) ? "null" : pvalue.ToString() } }).
2934
ToArray();
3035
}
3136

0 commit comments

Comments
 (0)