Skip to content

Commit 57ec315

Browse files
committed
Merge branch 'alobakov-NH-3817' fix for Merge fails randomly on a graph containing transient entities with multiple cascade paths
2 parents a6bedf4 + 0fa2bcc commit 57ec315

File tree

5 files changed

+672
-10
lines changed

5 files changed

+672
-10
lines changed
Lines changed: 390 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,390 @@
1+
using System;
2+
using System.Collections.Generic;
3+
4+
namespace NHibernate.Test.NHSpecificTest.NH3817
5+
{
6+
public class Itinerary
7+
{
8+
public override bool Equals(object obj)
9+
{
10+
Itinerary toCompare = obj as Itinerary;
11+
if (toCompare == null)
12+
{
13+
return false;
14+
}
15+
16+
if (Object.Equals(ItineraryId, default(int)) &&
17+
Object.Equals(toCompare.ItineraryId, default(int)))
18+
return ReferenceEquals(this, toCompare);
19+
20+
if (!Object.Equals(ItineraryId, toCompare.ItineraryId))
21+
return false;
22+
23+
return true;
24+
}
25+
26+
public override int GetHashCode()
27+
{
28+
//return 100;
29+
int hashCode = 13;
30+
31+
// if object is transient, use base GetHashCode()
32+
if (Object.Equals(ItineraryId, default(int)))
33+
return base.GetHashCode();
34+
35+
hashCode = (hashCode*7) + ItineraryId.GetHashCode();
36+
return hashCode;
37+
}
38+
39+
public Itinerary()
40+
{
41+
ItineraryGuests = new HashSet<ItineraryGuest>();
42+
Reservations = new HashSet<Reservation>();
43+
}
44+
45+
public virtual int ItineraryId { get; set; }
46+
47+
public virtual string ItineraryNumber { get; set; }
48+
49+
/// <summary>
50+
/// Cascade: AllDeleteOrphan
51+
/// </summary>
52+
public virtual ICollection<ItineraryGuest> ItineraryGuests { get; set; }
53+
54+
/// <summary>
55+
/// Cascade: AllDeleteOrphan
56+
/// </summary>
57+
public virtual ICollection<Reservation> Reservations { get; set; }
58+
}
59+
60+
public class ItineraryGuest
61+
{
62+
public override bool Equals(object obj)
63+
{
64+
ItineraryGuest toCompare = obj as ItineraryGuest;
65+
if (toCompare == null)
66+
{
67+
return false;
68+
}
69+
70+
if (Object.Equals(ItineraryGuestId, default(int)) &&
71+
Object.Equals(toCompare.ItineraryGuestId, default(int)))
72+
return ReferenceEquals(this, toCompare);
73+
74+
if (!Object.Equals(ItineraryGuestId, toCompare.ItineraryGuestId))
75+
return false;
76+
77+
return true;
78+
}
79+
80+
public override int GetHashCode()
81+
{
82+
//return 90;
83+
int hashCode = 13;
84+
85+
// if object is transient, use base GetHashCode()
86+
if (Object.Equals(ItineraryGuestId, default(int)))
87+
return base.GetHashCode();
88+
89+
hashCode = (hashCode*7) + ItineraryGuestId.GetHashCode();
90+
return hashCode;
91+
}
92+
93+
public ItineraryGuest()
94+
{
95+
ReservationGuests = new HashSet<ReservationGuest>();
96+
}
97+
98+
public virtual int ItineraryGuestId { get; set; }
99+
100+
public virtual string LastName { get; set; }
101+
102+
public virtual string FirstName { get; set; }
103+
104+
/// <summary>
105+
/// Cascade: None
106+
/// </summary>
107+
public virtual Itinerary Itinerary { get; set; }
108+
109+
/// <summary>
110+
/// Cascade: AllDeleteOrphan
111+
/// </summary>
112+
public virtual ICollection<ReservationGuest> ReservationGuests { get; set; }
113+
}
114+
115+
public class Reservation
116+
{
117+
public override bool Equals(object obj)
118+
{
119+
Reservation toCompare = obj as Reservation;
120+
if (toCompare == null)
121+
{
122+
return false;
123+
}
124+
125+
if (Object.Equals(ReservationId, default(int)) &&
126+
Object.Equals(toCompare.ReservationId, default(int)))
127+
return ReferenceEquals(this, toCompare);
128+
129+
if (!Object.Equals(ReservationId, toCompare.ReservationId))
130+
return false;
131+
132+
return true;
133+
}
134+
135+
public override int GetHashCode()
136+
{
137+
//return 80;
138+
int hashCode = 13;
139+
140+
// if object is transient, use base GetHashCode()
141+
if (Object.Equals(ReservationId, default(int)))
142+
return base.GetHashCode();
143+
144+
hashCode = (hashCode*7) + ReservationId.GetHashCode();
145+
return hashCode;
146+
}
147+
148+
public Reservation()
149+
{
150+
ReservationGuests = new HashSet<ReservationGuest>();
151+
ReservationDays = new HashSet<ReservationDay>();
152+
ReservationDayPrices = new HashSet<ReservationDayPrice>();
153+
}
154+
155+
public virtual int ReservationId { get; set; }
156+
157+
public virtual string ReservationNumber { get; set; }
158+
159+
/// <summary>
160+
/// Cascade: None
161+
/// </summary>
162+
public virtual Itinerary Itinerary { get; set; }
163+
164+
/// <summary>
165+
/// Cascade: AllDeleteOrphan
166+
/// </summary>
167+
public virtual ICollection<ReservationGuest> ReservationGuests { get; set; }
168+
169+
/// <summary>
170+
/// Cascade: AllDeleteOrphan
171+
/// </summary>
172+
public virtual ICollection<ReservationDayPrice> ReservationDayPrices { get; set; }
173+
174+
/// <summary>
175+
/// Cascade: AllDeleteOrphan
176+
/// </summary>
177+
public virtual ICollection<ReservationDay> ReservationDays { get; set; }
178+
}
179+
180+
public class ReservationGuest
181+
{
182+
public override bool Equals(object obj)
183+
{
184+
ReservationGuest toCompare = obj as ReservationGuest;
185+
if (toCompare == null)
186+
{
187+
return false;
188+
}
189+
190+
if (Object.Equals(ReservationGuestId, default(int)) &&
191+
Object.Equals(toCompare.ReservationGuestId, default(int)))
192+
return ReferenceEquals(this, toCompare);
193+
194+
if (!Object.Equals(ReservationGuestId, toCompare.ReservationGuestId))
195+
return false;
196+
197+
return true;
198+
}
199+
200+
public override int GetHashCode()
201+
{
202+
//return 70;
203+
int hashCode = 13;
204+
205+
// if object is transient, use base GetHashCode()
206+
if (Object.Equals(ReservationGuestId, default(int)))
207+
return base.GetHashCode();
208+
209+
hashCode = (hashCode*7) + ReservationGuestId.GetHashCode();
210+
return hashCode;
211+
}
212+
213+
public ReservationGuest()
214+
{
215+
ReservationDayShares = new HashSet<ReservationDayShare>();
216+
}
217+
218+
public virtual int ReservationGuestId { get; set; }
219+
220+
/// <summary>
221+
/// Cascade: None
222+
/// </summary>
223+
public virtual Reservation Reservation { get; set; }
224+
225+
/// <summary>
226+
/// Cascade: None
227+
/// </summary>
228+
public virtual ItineraryGuest ItineraryGuest { get; set; }
229+
230+
/// <summary>
231+
/// Cascade: AllDeleteOrphan
232+
/// </summary>
233+
public virtual ICollection<ReservationDayShare> ReservationDayShares { get; set; }
234+
}
235+
236+
public class ReservationDay
237+
{
238+
public override bool Equals(object obj)
239+
{
240+
ReservationDay toCompare = obj as ReservationDay;
241+
if (toCompare == null)
242+
{
243+
return false;
244+
}
245+
246+
if (Object.Equals(ReservationDayId, default(int)) &&
247+
Object.Equals(toCompare.ReservationDayId, default(int)))
248+
return ReferenceEquals(this, toCompare);
249+
250+
if (!Object.Equals(ReservationDayId, toCompare.ReservationDayId))
251+
return false;
252+
253+
return true;
254+
}
255+
256+
public override int GetHashCode()
257+
{
258+
int hashCode = 13;
259+
260+
// if object is transient, use base GetHashCode()
261+
if (Object.Equals(ReservationDayId, default(int)))
262+
return base.GetHashCode();
263+
264+
hashCode = (hashCode*7) + ReservationDayId.GetHashCode();
265+
return hashCode;
266+
}
267+
268+
public ReservationDay()
269+
{
270+
ReservationDayPrices = new HashSet<ReservationDayPrice>();
271+
ReservationDayShares = new HashSet<ReservationDayShare>();
272+
}
273+
274+
public virtual int ReservationDayId { get; set; }
275+
276+
public virtual DateTime BusinessDate { get; set; }
277+
278+
public virtual decimal QuotedRate { get; set; }
279+
280+
/// <summary>
281+
/// Cascade: None
282+
/// </summary>
283+
public virtual Reservation Reservation { get; set; }
284+
285+
/// <summary>
286+
/// Cascade: AllDeleteOrphan
287+
/// </summary>
288+
public virtual ICollection<ReservationDayPrice> ReservationDayPrices { get; set; }
289+
290+
/// <summary>
291+
/// Cascade: AllDeleteOrphan
292+
/// </summary>
293+
public virtual ICollection<ReservationDayShare> ReservationDayShares { get; set; }
294+
}
295+
296+
public class ReservationDayPrice
297+
{
298+
public override bool Equals(object obj)
299+
{
300+
ReservationDayPrice toCompare = obj as ReservationDayPrice;
301+
if (toCompare == null)
302+
{
303+
return false;
304+
}
305+
306+
if (Object.Equals(ReservationDayPriceId, default(int)) &&
307+
Object.Equals(toCompare.ReservationDayPriceId, default(int)))
308+
return ReferenceEquals(this, toCompare);
309+
310+
if (!Object.Equals(ReservationDayPriceId, toCompare.ReservationDayPriceId))
311+
return false;
312+
313+
return true;
314+
}
315+
316+
public override int GetHashCode()
317+
{
318+
int hashCode = 13;
319+
320+
// if object is transient, use base GetHashCode()
321+
if (Object.Equals(ReservationDayPriceId, default(int)))
322+
return base.GetHashCode();
323+
324+
hashCode = (hashCode*7) + ReservationDayPriceId.GetHashCode();
325+
return hashCode;
326+
}
327+
328+
public virtual int ReservationDayPriceId { get; set; }
329+
330+
public virtual decimal Price { get; set; }
331+
332+
/// <summary>
333+
/// Cascade: None
334+
/// </summary>
335+
public virtual Reservation Reservation { get; set; }
336+
337+
/// <summary>
338+
/// Cascade: None
339+
/// </summary>
340+
public virtual ReservationDay ReservationDay { get; set; }
341+
}
342+
343+
public class ReservationDayShare
344+
{
345+
public override bool Equals(object obj)
346+
{
347+
ReservationDayShare toCompare = obj as ReservationDayShare;
348+
if (toCompare == null)
349+
{
350+
return false;
351+
}
352+
353+
if (Object.Equals(ReservationDayShareId, default(int)) &&
354+
Object.Equals(toCompare.ReservationDayShareId, default(int)))
355+
return ReferenceEquals(this, toCompare);
356+
357+
if (!Object.Equals(ReservationDayShareId, toCompare.ReservationDayShareId))
358+
return false;
359+
360+
return true;
361+
}
362+
363+
public override int GetHashCode()
364+
{
365+
//return 60;
366+
int hashCode = 13;
367+
368+
// if object is transient, use base GetHashCode()
369+
if (Object.Equals(ReservationDayShareId, default(int)))
370+
return base.GetHashCode();
371+
372+
hashCode = (hashCode*7) + ReservationDayShareId.GetHashCode();
373+
return hashCode;
374+
}
375+
376+
public virtual int ReservationDayShareId { get; set; }
377+
378+
public virtual decimal? ShareValue { get; set; }
379+
380+
/// <summary>
381+
/// Cascade: None
382+
/// </summary>
383+
public virtual ReservationGuest ReservationGuest { get; set; }
384+
385+
/// <summary>
386+
/// Cascade: None
387+
/// </summary>
388+
public virtual ReservationDay ReservationDay { get; set; }
389+
}
390+
}

0 commit comments

Comments
 (0)