1
1
using System . Linq ;
2
2
using NHibernate . Cfg . MappingSchema ;
3
- using NHibernate . DomainModel ;
4
3
using NHibernate . Mapping . ByCode ;
5
4
using NUnit . Framework ;
6
5
7
- namespace NHibernate . Test . NHSpecificTest . NH3363
6
+ namespace NHibernate . Test . NHSpecificTest . GH3363
8
7
{
9
8
/// <summary>
10
- /// Fixture using 'by code' mappings
9
+ /// Fixture for wrong statement generated when child classes have same propery name but different type.
11
10
/// </summary>
12
- /// <remarks>
13
- /// This fixture is identical to <see cref="Fixture" /> except the <see cref="Entities" /> mapping is performed
14
- /// by code in the GetMappings method, and does not require the <c>Mappings.hbm.xml</c> file. Use this approach
15
- /// if you prefer.
16
- /// </remarks>
17
11
[ TestFixture ]
18
12
public class ByCodeFixture : TestCaseMappingByCode
19
13
{
20
14
protected override HbmMapping GetMappings ( )
21
15
{
22
16
var mapper = new ModelMapper ( ) ;
23
-
17
+
24
18
mapper . Class < Mother > ( rc =>
25
19
{
26
20
rc . Id ( x => x . Id , m => m . Generator ( Generators . Identity ) ) ;
@@ -30,16 +24,18 @@ protected override HbmMapping GetMappings()
30
24
mapper . Subclass < Child1 > ( rc =>
31
25
{
32
26
rc . Property ( x => x . Name ) ;
33
- rc . ManyToOne ( x => x . Thing , m => {
34
- m . NotFound ( NotFoundMode . Ignore ) ;
35
- m . Column ( "thingId" ) ;
36
- } ) ;
27
+ rc . ManyToOne ( x => x . Thing , m =>
28
+ {
29
+ m . NotFound ( NotFoundMode . Ignore ) ;
30
+ m . Column ( "thingId" ) ;
31
+ } ) ;
37
32
rc . DiscriminatorValue ( 1 ) ;
38
33
} ) ;
39
34
mapper . Subclass < Child2 > ( rc =>
40
35
{
41
36
rc . Property ( x => x . Name ) ;
42
- rc . ManyToOne ( x => x . Thing , m => {
37
+ rc . ManyToOne ( x => x . Thing , m =>
38
+ {
43
39
m . NotFound ( NotFoundMode . Ignore ) ;
44
40
m . Column ( "thingId" ) ;
45
41
} ) ;
@@ -49,7 +45,7 @@ protected override HbmMapping GetMappings()
49
45
{
50
46
rc . Id ( x => x . Id , m => m . Generator ( Generators . Assigned ) ) ;
51
47
rc . Property ( x => x . Name ) ;
52
-
48
+
53
49
} ) ;
54
50
mapper . Class < Thing2 > ( rc =>
55
51
{
@@ -65,11 +61,11 @@ protected override void OnSetUp()
65
61
using ( var session = OpenSession ( ) )
66
62
using ( var transaction = session . BeginTransaction ( ) )
67
63
{
68
- var t1 = new Thing1 ( ) { Name = "don't care" , Id = "00001" } ;
64
+ var t1 = new Thing1 ( ) { Name = "don't care" , Id = "00001" } ;
69
65
session . Save ( t1 ) ;
70
- var t2 = new Thing2 ( ) { Name = "look for this" , Id = "00002" } ;
66
+ var t2 = new Thing2 ( ) { Name = "look for this" , Id = "00002" } ;
71
67
session . Save ( t2 ) ;
72
- var child1 = new Child1 { Name = "Child1" , Thing = t1 } ;
68
+ var child1 = new Child1 { Name = "Child1" , Thing = t1 } ;
73
69
session . Save ( child1 ) ;
74
70
var child2 = new Child2 { Name = "Child1" , Thing = t2 } ;
75
71
session . Save ( child2 ) ;
@@ -99,7 +95,7 @@ public void LookForThingOfTypeThing2()
99
95
using ( var session = OpenSession ( ) )
100
96
using ( var transaction = session . BeginTransaction ( ) )
101
97
{
102
- var result = session . Query < Mother > ( ) . Where ( k=> k is Child2 && ( k as Child2 ) . Thing . Id == "00002" ) . ToList ( ) ;
98
+ var result = session . Query < Mother > ( ) . Where ( k => k is Child2 && ( k as Child2 ) . Thing . Id == "00002" ) . ToList ( ) ;
103
99
104
100
Assert . That ( result , Has . Count . EqualTo ( 1 ) ) ;
105
101
transaction . Commit ( ) ;
@@ -142,5 +138,4 @@ public void LookForManyToOneByDescr()
142
138
}
143
139
}
144
140
}
145
-
146
141
}
0 commit comments