annotate UnitTests/Linq/Model/ParentChild.cs @ 1:8f65451dc28f

Исправлена проблема с фабрикой и выборкой нескольких объектов в linq выражении
author cin
date Fri, 28 Mar 2014 01:04:56 +0400
parents f990fcb411a9
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1 using System;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2 using System.Collections.Generic;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3 using System.Reflection;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5 using BLToolkit.Data.Linq;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6 using BLToolkit.DataAccess;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7 using BLToolkit.Mapping;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
9 namespace Data.Linq.Model
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
10 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
11 #region Parent/Child/GrandChild
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
12
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
13 public interface IParent
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
14 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
15 int ParentID { get; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
16 int? Value1 { get; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
17 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
18
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
19 public class Parent : IEquatable<Parent>, IComparable
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
20 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
21 public int ParentID;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
22 public int? Value1;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
23
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
24 [Association(ThisKey = "ParentID", OtherKey = "ParentID")]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
25 public List<Child> Children;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
26
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
27 [Association(ThisKey = "ParentID", OtherKey = "ParentID")]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
28 public List<GrandChild> GrandChildren;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
29
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
30 [Association(ThisKey = "ParentID", OtherKey = "ParentID")]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
31 public IEnumerable<Child> Children2
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
32 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
33 get { return Children; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
34 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
35
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
36 public override bool Equals(object obj)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
37 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
38 if (obj.GetType() != typeof(Parent)) return false;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
39 return Equals((Parent)obj);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
40 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
41
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
42 public bool Equals(Parent other)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
43 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
44 if (ReferenceEquals(null, other)) return false;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
45 if (ReferenceEquals(this, other)) return true;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
46 return other.ParentID == ParentID && other.Value1.Equals(Value1);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
47 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
48
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
49 public override int GetHashCode()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
50 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
51 unchecked { return (ParentID * 397) ^ (Value1 ?? 0); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
52 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
53
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
54 public int CompareTo(object obj)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
55 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
56 return ParentID - ((Parent)obj).ParentID;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
57 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
58
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
59 [Association(ThisKey = "ParentID", OtherKey = "ID")]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
60 public LinqDataTypes Types;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
61 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
62
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
63 public class Child
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
64 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
65 [PrimaryKey] public int ParentID;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
66 [PrimaryKey] public int ChildID;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
67
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
68 [Association(ThisKey = "ParentID", OtherKey = "ParentID")]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
69 public Parent Parent;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
70
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
71 [Association(ThisKey = "ParentID", OtherKey = "ParentID", CanBeNull = false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
72 public Parent1 Parent1;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
73
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
74 [Association(ThisKey = "ParentID", OtherKey = "ParentID2", CanBeNull = false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
75 public Parent3 ParentID2;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
76
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
77 [Association(ThisKey = "ParentID, ChildID", OtherKey = "ParentID, ChildID")]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
78 public List<GrandChild> GrandChildren;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
79
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
80 public override bool Equals(object obj)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
81 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
82 return Equals(obj as Child);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
83 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
84
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
85 public bool Equals(Child other)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
86 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
87 if (ReferenceEquals(null, other)) return false;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
88 if (ReferenceEquals(this, other)) return true;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
89
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
90 return other.ParentID == ParentID && other.ChildID == ChildID;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
91 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
92
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
93 public override int GetHashCode()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
94 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
95 unchecked { return (ParentID * 397) ^ ChildID; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
96 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
97 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
98
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
99 public class GrandChild : IEquatable<GrandChild>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
100 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
101 public GrandChild()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
102 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
103
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
104 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
105
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
106 public int? ParentID;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
107 public int? ChildID;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
108 public int? GrandChildID;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
109
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
110 [Association(ThisKey = "ParentID, ChildID", OtherKey = "ParentID, ChildID")]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
111 public Child Child;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
112
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
113 public override bool Equals(object obj)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
114 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
115 if (ReferenceEquals(null, obj)) return false;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
116 if (ReferenceEquals(this, obj)) return true;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
117 if (obj.GetType() != typeof (GrandChild)) return false;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
118
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
119 return Equals((GrandChild)obj);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
120 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
121
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
122 public bool Equals(GrandChild other)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
123 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
124 if (ReferenceEquals(null, other)) return false;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
125 if (ReferenceEquals(this, other)) return true;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
126
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
127 return other.ParentID.Equals(ParentID) && other.ChildID.Equals(ChildID) && other.GrandChildID.Equals(GrandChildID);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
128 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
129
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
130 public override int GetHashCode()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
131 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
132 unchecked
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
133 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
134 var result = ParentID.HasValue ? ParentID.Value : 0;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
135
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
136 result = (result * 397) ^ (ChildID. HasValue ? ChildID. Value : 0);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
137 result = (result * 397) ^ (GrandChildID.HasValue ? GrandChildID.Value : 0);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
138
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
139 return result;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
140 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
141 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
142 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
143
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
144 [TableName("Parent")]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
145 public class Parent3 : IEquatable<Parent3>, IComparable
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
146 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
147 [MapField("ParentID")]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
148 public int ParentID2 { get; set; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
149 public int? Value1 { get; set; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
150
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
151 public override bool Equals(object obj)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
152 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
153 if (obj.GetType() != typeof (Parent3)) return false;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
154 return Equals((Parent3)obj);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
155 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
156
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
157 public bool Equals(Parent3 other)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
158 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
159 if (ReferenceEquals(null, other)) return false;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
160 if (ReferenceEquals(this, other)) return true;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
161 return other.ParentID2 == ParentID2 && other.Value1.Equals(Value1);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
162 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
163
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
164 public override int GetHashCode()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
165 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
166 unchecked { return (ParentID2 * 397) ^ (Value1 ?? 0); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
167 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
168
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
169 public int CompareTo(object obj)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
170 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
171 return ParentID2 - ((Parent3)obj).ParentID2;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
172 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
173 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
174
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
175 [TableName("Parent")]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
176 public class Parent4 : IEquatable<Parent4>, IComparable
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
177 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
178 public int ParentID;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
179 public TypeValue Value1;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
180
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
181 public override bool Equals(object obj)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
182 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
183 if (obj.GetType() != typeof (Parent4)) return false;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
184 return Equals((Parent4)obj);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
185 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
186
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
187 public bool Equals(Parent4 other)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
188 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
189 if (ReferenceEquals(null, other)) return false;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
190 if (ReferenceEquals(this, other)) return true;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
191 return other.ParentID == ParentID && other.Value1.Equals(Value1);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
192 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
193
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
194 public override int GetHashCode()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
195 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
196 unchecked { return (ParentID * 397) ^ (int)Value1; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
197 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
198
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
199 public int CompareTo(object obj)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
200 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
201 return ParentID - ((Parent4)obj).ParentID;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
202 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
203 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
204
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
205 [TableName("Parent")]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
206 public class Parent5 : IEquatable<Parent5>, IComparable
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
207 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
208 public int ParentID;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
209 public int? Value1;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
210
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
211 [Association(ThisKey = "ParentID", OtherKey = "Value1", CanBeNull = true)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
212 public List<Parent5> Children;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
213
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
214 public override bool Equals(object obj)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
215 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
216 if (obj.GetType() != typeof(Parent5)) return false;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
217 return Equals((Parent5)obj);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
218 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
219
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
220 public bool Equals(Parent5 other)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
221 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
222 if (ReferenceEquals(null, other)) return false;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
223 if (ReferenceEquals(this, other)) return true;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
224 return other.ParentID == ParentID && other.Value1.Equals(Value1);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
225 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
226
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
227 public override int GetHashCode()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
228 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
229 unchecked { return (ParentID * 397) ^ (int)Value1; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
230 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
231
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
232 public int CompareTo(object obj)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
233 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
234 return ParentID - ((Parent5)obj).ParentID;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
235 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
236 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
237
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
238 #endregion
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
239
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
240 #region Parent1/GrandChild1
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
241
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
242 [TableName("Parent")]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
243 public class Parent1 : IEquatable<Parent1>, IComparable
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
244 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
245 [PrimaryKey]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
246 public int ParentID;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
247 public int? Value1;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
248
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
249 [Association(ThisKey = "ParentID", OtherKey = "ParentID")]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
250 public List<Child> Children;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
251
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
252 public override bool Equals(object obj)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
253 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
254 if (obj.GetType() != typeof (Parent1)) return false;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
255 return Equals((Parent1)obj);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
256 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
257
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
258 public bool Equals(Parent1 other)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
259 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
260 if (ReferenceEquals(null, other)) return false;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
261 if (ReferenceEquals(this, other)) return true;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
262 return other.ParentID == ParentID;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
263 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
264
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
265 public override int GetHashCode()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
266 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
267 unchecked { return ParentID * 397; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
268 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
269
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
270 public int CompareTo(object obj)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
271 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
272 return ParentID - ((Parent1)obj).ParentID;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
273 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
274 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
275
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
276 [TableName("GrandChild")]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
277 public class GrandChild1 : IEquatable<GrandChild1>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
278 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
279 public int ParentID;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
280 public int? ChildID;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
281 public int? GrandChildID;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
282
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
283 [Association(ThisKey = "ParentID, ChildID", OtherKey = "ParentID, ChildID")]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
284 public Child Child;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
285
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
286 [Association(ThisKey = "ParentID", OtherKey = "ParentID", CanBeNull = false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
287 public Parent1 Parent;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
288
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
289 public override bool Equals(object obj)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
290 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
291 if (ReferenceEquals(null, obj)) return false;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
292 if (ReferenceEquals(this, obj)) return true;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
293 if (obj.GetType() != typeof (GrandChild1)) return false;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
294
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
295 return Equals((GrandChild1)obj);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
296 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
297
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
298 public bool Equals(GrandChild1 other)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
299 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
300 if (ReferenceEquals(null, other)) return false;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
301 if (ReferenceEquals(this, other)) return true;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
302
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
303 return other.ParentID.Equals(ParentID) && other.ChildID.Equals(ChildID) && other.GrandChildID.Equals(GrandChildID);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
304 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
305
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
306 public override int GetHashCode()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
307 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
308 unchecked
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
309 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
310 var result = ParentID;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
311
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
312 result = (result * 397) ^ (ChildID. HasValue ? ChildID. Value : 0);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
313 result = (result * 397) ^ (GrandChildID.HasValue ? GrandChildID.Value : 0);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
314
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
315 return result;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
316 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
317 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
318 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
319
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
320 #endregion
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
321
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
322 #region Inheritance
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
323
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
324 [TableName("Parent")]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
325 [InheritanceMapping(Code = null, Type = typeof(ParentInheritanceNull))]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
326 [InheritanceMapping(Code = 1, Type = typeof(ParentInheritance1))]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
327 [InheritanceMapping( Type = typeof(ParentInheritanceValue), IsDefault = true)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
328 public abstract class ParentInheritanceBase : IEquatable<ParentInheritanceBase>, IComparable
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
329 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
330 [PrimaryKey]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
331 public int ParentID;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
332
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
333 [Association(ThisKey = "ParentID", OtherKey = "ParentID")]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
334 public List<Child> Children;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
335
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
336 public override bool Equals(object obj)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
337 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
338 if (obj.GetType() != GetType()) return false;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
339 return Equals((ParentInheritanceBase)obj);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
340 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
341
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
342 public bool Equals(ParentInheritanceBase other)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
343 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
344 if (ReferenceEquals(null, other)) return false;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
345 if (ReferenceEquals(this, other)) return true;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
346 return other.ParentID == ParentID;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
347 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
348
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
349 public override int GetHashCode()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
350 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
351 return ParentID;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
352 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
353
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
354 public int CompareTo(object obj)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
355 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
356 return ParentID - ((Parent)obj).ParentID;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
357 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
358 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
359
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
360 public class ParentInheritanceNull : ParentInheritanceBase
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
361 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
362 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
363
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
364 public class ParentInheritance1 : ParentInheritanceBase, IEquatable<ParentInheritance1>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
365 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
366 [MapField(IsInheritanceDiscriminator = true)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
367 public int Value1;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
368
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
369 public override bool Equals(object obj)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
370 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
371 var ret = base.Equals(obj) && Equals((ParentInheritance1)obj);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
372 return ret;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
373 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
374
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
375 public bool Equals(ParentInheritance1 other)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
376 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
377 return base.Equals(other) && other.Value1.Equals(Value1);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
378 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
379
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
380 public override int GetHashCode()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
381 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
382 unchecked { return (ParentID * 397) ^ Value1; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
383 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
384 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
385
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
386 public class ParentInheritanceValue : ParentInheritanceBase
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
387 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
388 [MapField(IsInheritanceDiscriminator = true)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
389 public int Value1;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
390
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
391 public override bool Equals(object obj)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
392 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
393 return base.Equals(obj) && Equals((ParentInheritanceValue)obj);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
394 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
395
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
396 public bool Equals(ParentInheritanceValue other)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
397 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
398 return base.Equals(other) && other.Value1.Equals(Value1);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
399 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
400
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
401 public override int GetHashCode()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
402 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
403 unchecked { return (ParentID * 397) ^ Value1; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
404 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
405 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
406
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
407 #endregion
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
408
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
409 #region Inheritance2
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
410
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
411 [TableName("Parent")]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
412 [InheritanceMapping(Code = null, Type = typeof(ParentInheritanceBase2))]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
413 [InheritanceMapping(Code = 1, Type = typeof(ParentInheritance12))]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
414 [InheritanceMapping(Code = 2, Type = typeof(ParentInheritance12))]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
415 public abstract class ParentInheritanceBase2
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
416 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
417 [PrimaryKey]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
418 public int ParentID;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
419
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
420 [Association(ThisKey = "ParentID", OtherKey = "ParentID")]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
421 public List<Child> Children;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
422 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
423
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
424 public class ParentInheritance12 : ParentInheritanceBase2
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
425 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
426 [MapField(IsInheritanceDiscriminator = true)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
427 public int Value1;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
428 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
429
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
430 #endregion
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
431
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
432 #region Inheritance3
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
433
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
434 [TableName("Parent")]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
435 [InheritanceMapping(Code = null, Type = typeof(ParentInheritanceBase3))]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
436 [InheritanceMapping(Code = 1, Type = typeof(ParentInheritance13))]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
437 [InheritanceMapping(Code = 2, Type = typeof(ParentInheritance13))]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
438 public abstract class ParentInheritanceBase3
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
439 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
440 [PrimaryKey]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
441 public int ParentID;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
442
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
443 [Association(ThisKey = "ParentID", OtherKey = "ParentID")]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
444 public List<Child> Children;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
445 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
446
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
447 public class ParentInheritance13 : ParentInheritanceBase3
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
448 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
449 [MapField("Value1", IsInheritanceDiscriminator = true)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
450 public int Value;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
451 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
452
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
453 #endregion
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
454
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
455 #region Inheritance4
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
456
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
457 public enum Parent4Type
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
458 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
459 Value1 = 1,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
460 Value2 = 2
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
461 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
462
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
463 [TableName("Parent")]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
464 [InheritanceMapping(Code = (int)Parent4Type.Value1, Type = typeof(ParentInheritance14))]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
465 [InheritanceMapping(Code = (int)Parent4Type.Value2, Type = typeof(ParentInheritance24))]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
466 public abstract class ParentInheritanceBase4
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
467 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
468 [PrimaryKey]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
469 public int ParentID;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
470
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
471 public abstract Parent4Type Value1 { get; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
472 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
473
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
474 public class ParentInheritance14 : ParentInheritanceBase4
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
475 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
476 [MapField(IsInheritanceDiscriminator = true)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
477 public override Parent4Type Value1 { get { return Parent4Type.Value1; } }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
478 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
479
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
480 public class ParentInheritance24 : ParentInheritanceBase4
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
481 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
482 [MapField(IsInheritanceDiscriminator = true)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
483 public override Parent4Type Value1 { get { return Parent4Type.Value2; } }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
484 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
485
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
486 #endregion
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
487
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
488 public class Functions
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
489 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
490 private readonly IDataContext _ctx;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
491
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
492 public Functions(IDataContext ctx)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
493 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
494 _ctx = ctx;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
495 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
496
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
497 [TableFunction(Name="GetParentByID")]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
498 public Table<Parent> GetParentByID(int? id)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
499 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
500 return _ctx.GetTable<Parent>(this, (MethodInfo)(MethodBase.GetCurrentMethod()), id);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
501 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
502
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
503 [TableExpression("{0} {1} WITH (TABLOCK)")]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
504 public Table<T> WithTabLock<T>()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
505 where T : class
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
506 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
507 return _ctx.GetTable<T>(this, ((MethodInfo)(MethodBase.GetCurrentMethod())).MakeGenericMethod(typeof(T)));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
508 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
509 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
510 }