1
+ using NUnit . Framework ;
2
+ using ServiceStack . DataAnnotations ;
3
+ using ServiceStack . Text ;
4
+
5
+ namespace ServiceStack . OrmLite . Tests . Issues
6
+ {
7
+ public class ParentSelfRef
8
+ {
9
+ [ AutoIncrement ]
10
+ public int Id { get ; set ; }
11
+
12
+ [ References ( typeof ( ChildSelfRef ) ) ]
13
+ public int ? Child1Id { get ; set ; }
14
+
15
+ [ Reference ]
16
+ public ChildSelfRef Child1 { get ; set ; }
17
+
18
+ [ References ( typeof ( ChildSelfRef ) ) ]
19
+ public int ? Child2Id { get ; set ; }
20
+
21
+ [ Reference ]
22
+ public ChildSelfRef Child2 { get ; set ; }
23
+ }
24
+
25
+ public class ChildSelfRef
26
+ {
27
+ [ AutoIncrement ]
28
+ public int Id { get ; set ; }
29
+ public string Name { get ; set ; }
30
+ }
31
+
32
+ public class MultipleSelfJoinsWithNullableInts : OrmLiteTestBase
33
+ {
34
+ [ Test ]
35
+ public void Does_support_multiple_self_joins_with_nullable_ints ( )
36
+ {
37
+ using ( var db = OpenDbConnection ( ) )
38
+ {
39
+ db . DropTable < ParentSelfRef > ( ) ;
40
+ db . DropTable < ChildSelfRef > ( ) ;
41
+
42
+ db . CreateTable < ChildSelfRef > ( ) ;
43
+ db . CreateTable < ParentSelfRef > ( ) ;
44
+
45
+ var row = new ParentSelfRef
46
+ {
47
+ Child1 = new ChildSelfRef
48
+ {
49
+ Name = "Child 1"
50
+ } ,
51
+ Child2 = new ChildSelfRef
52
+ {
53
+ Name = "Child 2"
54
+ } ,
55
+ } ;
56
+
57
+ db . Save ( row , references : true ) ;
58
+
59
+ row . PrintDump ( ) ;
60
+
61
+ Assert . That ( row . Id , Is . EqualTo ( 1 ) ) ;
62
+ Assert . That ( row . Child1Id , Is . EqualTo ( 1 ) ) ;
63
+ Assert . That ( row . Child1 . Id , Is . EqualTo ( 1 ) ) ;
64
+ Assert . That ( row . Child1 . Name , Is . EqualTo ( "Child 1" ) ) ;
65
+ Assert . That ( row . Child2Id , Is . EqualTo ( 2 ) ) ;
66
+ Assert . That ( row . Child2 . Id , Is . EqualTo ( 2 ) ) ;
67
+ Assert . That ( row . Child2 . Name , Is . EqualTo ( "Child 2" ) ) ;
68
+
69
+ row = db . LoadSingleById < ParentSelfRef > ( row . Id ) ;
70
+
71
+ Assert . That ( row . Id , Is . EqualTo ( 1 ) ) ;
72
+ Assert . That ( row . Child1Id , Is . EqualTo ( 1 ) ) ;
73
+ Assert . That ( row . Child1 . Id , Is . EqualTo ( 1 ) ) ;
74
+ Assert . That ( row . Child1 . Name , Is . EqualTo ( "Child 1" ) ) ;
75
+ Assert . That ( row . Child2Id , Is . EqualTo ( 2 ) ) ;
76
+ Assert . That ( row . Child2 . Id , Is . EqualTo ( 2 ) ) ;
77
+ Assert . That ( row . Child2 . Name , Is . EqualTo ( "Child 2" ) ) ;
78
+ }
79
+ }
80
+ }
81
+ }
0 commit comments