File tree Expand file tree Collapse file tree 3 files changed +131
-0
lines changed
src/NHibernate.Test/NHSpecificTest/GH2089 Expand file tree Collapse file tree 3 files changed +131
-0
lines changed Original file line number Diff line number Diff line change
1
+ using NUnit . Framework ;
2
+
3
+ namespace NHibernate . Test . NHSpecificTest . GH2089
4
+ {
5
+ [ KnownBug ( "gh-2089" ) ]
6
+ public class Fixture : BugTestCase
7
+ {
8
+ private Parent _parent ;
9
+
10
+ protected override void OnSetUp ( )
11
+ {
12
+ using ( var s = OpenSession ( ) )
13
+ using ( var tx = s . BeginTransaction ( ) )
14
+ {
15
+ _parent = new Parent ( ) ;
16
+ _parent . AddChild ( new Child ( ) ) ;
17
+ s . Save ( _parent ) ;
18
+ tx . Commit ( ) ;
19
+ }
20
+ }
21
+
22
+ [ Test ]
23
+ public virtual void CanAddChild ( )
24
+ {
25
+ var newChild = new Child ( ) ;
26
+ _parent . AddChild ( newChild ) ;
27
+ using ( var s = OpenSession ( ) )
28
+ using ( var tx = s . BeginTransaction ( ) )
29
+ {
30
+ s . Merge ( newChild ) ;
31
+ tx . Commit ( ) ;
32
+ }
33
+
34
+ using ( var s = OpenSession ( ) )
35
+ {
36
+ Assert . That ( s . Get < Parent > ( _parent . Id ) . Children . Count , Is . EqualTo ( 2 ) ) ;
37
+ }
38
+ }
39
+
40
+
41
+ protected override void OnTearDown ( )
42
+ {
43
+ using ( var s = OpenSession ( ) )
44
+ using ( var tx = s . BeginTransaction ( ) )
45
+ {
46
+ s . Delete ( s . Load < Parent > ( _parent . Id ) ) ;
47
+ tx . Commit ( ) ;
48
+ }
49
+ }
50
+ }
51
+ }
Original file line number Diff line number Diff line change
1
+ <?xml version =" 1.0" encoding =" utf-8" ?>
2
+ <hibernate-mapping xmlns =" urn:nhibernate-mapping-2.2"
3
+ namespace =" NHibernate.Test.NHSpecificTest.GH2089"
4
+ assembly =" NHibernate.Test" >
5
+
6
+ <class name =" Parent" >
7
+ <id name =" Id" >
8
+ <generator class =" native" />
9
+ </id >
10
+ <property name =" Name" />
11
+ <list name =" Children" cascade =" all-delete-orphan" inverse =" true" >
12
+ <key column =" parent_id" not-null =" true" />
13
+ <index column =" child_index" />
14
+ <one-to-many class =" Child" />
15
+ </list >
16
+ </class >
17
+
18
+ <class name =" Child" >
19
+ <id name =" Id" >
20
+ <generator class =" native" />
21
+ </id >
22
+ <property name =" Name" />
23
+ <many-to-one name =" Parent" class =" Parent" column =" parent_id" />
24
+ <property name =" OrderIndex" access =" readonly" column =" child_index" />
25
+ </class >
26
+ </hibernate-mapping >
Original file line number Diff line number Diff line change
1
+ using System . Collections . Generic ;
2
+
3
+ namespace NHibernate . Test . NHSpecificTest . GH2089
4
+ {
5
+ public class Parent
6
+ {
7
+ public virtual int Id { get ; set ; }
8
+ public virtual string Name { get ; set ; }
9
+ public virtual IList < Child > Children { get ; protected set ; } = new List < Child > ( ) ;
10
+
11
+ public virtual void AddChild ( Child child )
12
+ {
13
+ Children . Add ( child ) ;
14
+ child . Parent = this ;
15
+ }
16
+
17
+ public override bool Equals ( object obj )
18
+ {
19
+ return obj is Parent other && Id == other . Id ;
20
+ }
21
+
22
+ public override int GetHashCode ( )
23
+ {
24
+ return 0 ;
25
+ }
26
+ }
27
+
28
+ public class Child
29
+ {
30
+ public virtual int Id { get ; set ; }
31
+ public virtual string Name { get ; set ; }
32
+ public virtual Parent Parent { get ; set ; }
33
+
34
+ public virtual int OrderIndex
35
+ {
36
+ get
37
+ {
38
+ if ( Parent == null )
39
+ return - 2 ;
40
+ return Parent . Children . IndexOf ( this ) ;
41
+ }
42
+ }
43
+
44
+ public override bool Equals ( object obj )
45
+ {
46
+ return obj is Child other && Id == other . Id ;
47
+ }
48
+
49
+ public override int GetHashCode ( )
50
+ {
51
+ return 0 ;
52
+ }
53
+ }
54
+ }
You can’t perform that action at this time.
0 commit comments