10
10
11
11
using System . Linq ;
12
12
using NHibernate . Cfg . MappingSchema ;
13
- using NHibernate . DomainModel ;
14
13
using NHibernate . Mapping . ByCode ;
15
14
using NUnit . Framework ;
16
15
using NHibernate . Linq ;
17
16
18
- namespace NHibernate . Test . NHSpecificTest . NH3363
17
+ namespace NHibernate . Test . NHSpecificTest . GH3363
19
18
{
20
19
using System . Threading . Tasks ;
21
20
/// <summary>
22
- /// Fixture using 'by code' mappings
21
+ /// Fixture for wrong statement generated when child classes have same propery name but different type.
23
22
/// </summary>
24
- /// <remarks>
25
- /// This fixture is identical to <see cref="Fixture" /> except the <see cref="Entities" /> mapping is performed
26
- /// by code in the GetMappings method, and does not require the <c>Mappings.hbm.xml</c> file. Use this approach
27
- /// if you prefer.
28
- /// </remarks>
29
23
[ TestFixture ]
30
24
public class ByCodeFixtureAsync : TestCaseMappingByCode
31
25
{
32
26
protected override HbmMapping GetMappings ( )
33
27
{
34
28
var mapper = new ModelMapper ( ) ;
35
-
29
+
36
30
mapper . Class < Mother > ( rc =>
37
31
{
38
32
rc . Id ( x => x . Id , m => m . Generator ( Generators . Identity ) ) ;
@@ -42,16 +36,18 @@ protected override HbmMapping GetMappings()
42
36
mapper . Subclass < Child1 > ( rc =>
43
37
{
44
38
rc . Property ( x => x . Name ) ;
45
- rc . ManyToOne ( x => x . Thing , m => {
46
- m . NotFound ( NotFoundMode . Ignore ) ;
47
- m . Column ( "thingId" ) ;
48
- } ) ;
39
+ rc . ManyToOne ( x => x . Thing , m =>
40
+ {
41
+ m . NotFound ( NotFoundMode . Ignore ) ;
42
+ m . Column ( "thingId" ) ;
43
+ } ) ;
49
44
rc . DiscriminatorValue ( 1 ) ;
50
45
} ) ;
51
46
mapper . Subclass < Child2 > ( rc =>
52
47
{
53
48
rc . Property ( x => x . Name ) ;
54
- rc . ManyToOne ( x => x . Thing , m => {
49
+ rc . ManyToOne ( x => x . Thing , m =>
50
+ {
55
51
m . NotFound ( NotFoundMode . Ignore ) ;
56
52
m . Column ( "thingId" ) ;
57
53
} ) ;
@@ -61,7 +57,7 @@ protected override HbmMapping GetMappings()
61
57
{
62
58
rc . Id ( x => x . Id , m => m . Generator ( Generators . Assigned ) ) ;
63
59
rc . Property ( x => x . Name ) ;
64
-
60
+
65
61
} ) ;
66
62
mapper . Class < Thing2 > ( rc =>
67
63
{
@@ -77,11 +73,11 @@ protected override void OnSetUp()
77
73
using ( var session = OpenSession ( ) )
78
74
using ( var transaction = session . BeginTransaction ( ) )
79
75
{
80
- var t1 = new Thing1 ( ) { Name = "don't care" , Id = "00001" } ;
76
+ var t1 = new Thing1 ( ) { Name = "don't care" , Id = "00001" } ;
81
77
session . Save ( t1 ) ;
82
- var t2 = new Thing2 ( ) { Name = "look for this" , Id = "00002" } ;
78
+ var t2 = new Thing2 ( ) { Name = "look for this" , Id = "00002" } ;
83
79
session . Save ( t2 ) ;
84
- var child1 = new Child1 { Name = "Child1" , Thing = t1 } ;
80
+ var child1 = new Child1 { Name = "Child1" , Thing = t1 } ;
85
81
session . Save ( child1 ) ;
86
82
var child2 = new Child2 { Name = "Child1" , Thing = t2 } ;
87
83
session . Save ( child2 ) ;
@@ -111,7 +107,7 @@ public async Task LookForThingOfTypeThing2Async()
111
107
using ( var session = OpenSession ( ) )
112
108
using ( var transaction = session . BeginTransaction ( ) )
113
109
{
114
- var result = await ( session . Query < Mother > ( ) . Where ( k=> k is Child2 && ( k as Child2 ) . Thing . Id == "00002" ) . ToListAsync ( ) ) ;
110
+ var result = await ( session . Query < Mother > ( ) . Where ( k => k is Child2 && ( k as Child2 ) . Thing . Id == "00002" ) . ToListAsync ( ) ) ;
115
111
116
112
Assert . That ( result , Has . Count . EqualTo ( 1 ) ) ;
117
113
await ( transaction . CommitAsync ( ) ) ;
@@ -154,5 +150,4 @@ public async Task LookForManyToOneByDescrAsync()
154
150
}
155
151
}
156
152
}
157
-
158
153
}
0 commit comments