1
+ using System ;
2
+ using System . Collections . Generic ;
3
+
4
+ namespace NHibernate . Test . NHSpecificTest . NH3931
5
+ {
6
+ public class AddressM2M
7
+ {
8
+ public virtual Guid Id { get ; set ; }
9
+
10
+ public virtual ISet < PersonM2M > Persons { get ; set ; } = new HashSet < PersonM2M > ( ) ;
11
+
12
+ public virtual void AddPerson ( PersonM2M person )
13
+ {
14
+ Persons . Add ( person ) ;
15
+ person . Addresses . Add ( this ) ;
16
+ }
17
+ }
18
+
19
+ public class PersonM2M
20
+ {
21
+ public virtual Guid Id { get ; set ; }
22
+
23
+ public virtual ISet < AddressM2M > Addresses { get ; set ; } = new HashSet < AddressM2M > ( ) ;
24
+ }
25
+
26
+ public class AddressM2O
27
+ {
28
+ public virtual Guid Id { get ; set ; }
29
+
30
+ public virtual ISet < PersonM2O > Persons { get ; set ; } = new HashSet < PersonM2O > ( ) ;
31
+
32
+ public virtual void AddPerson ( PersonM2O person )
33
+ {
34
+ Persons . Add ( person ) ;
35
+ person . Address = this ;
36
+ }
37
+ }
38
+
39
+ public class PersonM2O
40
+ {
41
+ public virtual Guid Id { get ; set ; }
42
+
43
+ public virtual AddressM2O Address { get ; set ; }
44
+ }
45
+
46
+ public class AddressJI
47
+ {
48
+ public virtual Guid Id { get ; set ; }
49
+ }
50
+
51
+ public class PersonJI
52
+ {
53
+ public virtual Guid Id { get ; set ; }
54
+
55
+ public virtual ISet < AddressJI > Addresses { get ; set ; } = new HashSet < AddressJI > ( ) ;
56
+
57
+ public virtual void AddAddress ( AddressJI address )
58
+ {
59
+ Addresses . Add ( address ) ;
60
+ }
61
+ }
62
+
63
+ public class SpecialPersonJI : PersonJI
64
+ {
65
+ public virtual string Special { get ; set ; }
66
+ }
67
+
68
+ public class AddressJim
69
+ {
70
+ public virtual Guid Id { get ; set ; }
71
+ }
72
+
73
+ public class OfficeJim
74
+ {
75
+ public virtual Guid Id { get ; set ; }
76
+ }
77
+
78
+ public class PersonJim
79
+ {
80
+ public virtual Guid Id { get ; set ; }
81
+ }
82
+
83
+ public class SpecialPersonJim : PersonJim
84
+ {
85
+ public virtual string Special { get ; set ; }
86
+
87
+ public virtual ISet < AddressJim > Addresses { get ; set ; } = new HashSet < AddressJim > ( ) ;
88
+
89
+ public virtual void AddAddress ( AddressJim address )
90
+ {
91
+ Addresses . Add ( address ) ;
92
+ }
93
+ }
94
+
95
+ public class AnotherPersonJim : PersonJim
96
+ {
97
+ public virtual bool Working { get ; set ; }
98
+ public virtual OfficeJim Office { get ; set ; }
99
+ }
100
+
101
+ public class PresidentJim : SpecialPersonJim
102
+ {
103
+ public virtual decimal Salary { get ; set ; }
104
+ }
105
+
106
+ public class AddressSti
107
+ {
108
+ public virtual Guid Id { get ; set ; }
109
+ }
110
+
111
+ public class PersonSti
112
+ {
113
+ public virtual Guid Id { get ; set ; }
114
+
115
+ public virtual ISet < AddressSti > Addresses { get ; set ; } = new HashSet < AddressSti > ( ) ;
116
+
117
+ public virtual void AddAddress ( AddressSti address )
118
+ {
119
+ Addresses . Add ( address ) ;
120
+ }
121
+ }
122
+
123
+ public class SpecialPersonSti : PersonSti
124
+ {
125
+ public virtual string Special { get ; set ; }
126
+ }
127
+
128
+ public class AddressTpc
129
+ {
130
+ public virtual Guid Id { get ; set ; }
131
+ }
132
+
133
+ public class PersonTpc
134
+ {
135
+ public virtual Guid Id { get ; set ; }
136
+
137
+ public virtual ISet < AddressTpc > Addresses { get ; set ; } = new HashSet < AddressTpc > ( ) ;
138
+
139
+ public virtual void AddAddress ( AddressTpc address )
140
+ {
141
+ Addresses . Add ( address ) ;
142
+ }
143
+ }
144
+
145
+ public class SpecialPersonTpc : PersonTpc
146
+ {
147
+ public virtual string Special { get ; set ; }
148
+ }
149
+
150
+ public class Task
151
+ {
152
+ public virtual Guid Id { get ; set ; }
153
+ public virtual ISet < Category > Categories { get ; set ; } = new HashSet < Category > ( ) ;
154
+ }
155
+
156
+ public enum Category
157
+ {
158
+ A ,
159
+ B
160
+ }
161
+ }
0 commit comments