@@ -17,16 +17,15 @@ protected override HbmMapping GetMappings()
17
17
{
18
18
rc . Id ( x => x . Id , m => m . Generator ( Generators . GuidComb ) ) ;
19
19
rc . Property ( x => x . Name ) ;
20
- rc . List (
21
- x => x . Children ,
22
- c =>
23
- {
24
- c . Cascade ( Mapping . ByCode . Cascade . All | Mapping . ByCode . Cascade . DeleteOrphans ) ;
25
- } ,
26
- x => x . OneToMany ( )
27
- ) ;
20
+ rc . List ( x => x . ChildrenList , c => c . Cascade ( Mapping . ByCode . Cascade . All | Mapping . ByCode . Cascade . DeleteOrphans ) , x => x . OneToMany ( ) ) ;
21
+ rc . Map ( x => x . ChildrenMap , c => c . Cascade ( Mapping . ByCode . Cascade . All | Mapping . ByCode . Cascade . DeleteOrphans ) , x => x . OneToMany ( ) ) ;
28
22
} ) ;
29
- mapper . Class < Child > ( rc =>
23
+ mapper . Class < ListChild > ( rc =>
24
+ {
25
+ rc . Id ( x => x . Id , m => m . Generator ( Generators . GuidComb ) ) ;
26
+ rc . Property ( x => x . Name ) ;
27
+ } ) ;
28
+ mapper . Class < MapChild > ( rc =>
30
29
{
31
30
rc . Id ( x => x . Id , m => m . Generator ( Generators . GuidComb ) ) ;
32
31
rc . Property ( x => x . Name ) ;
@@ -40,14 +39,13 @@ protected override void OnSetUp()
40
39
using ( ISession session = OpenSession ( ) )
41
40
using ( ITransaction transaction = session . BeginTransaction ( ) )
42
41
{
43
- var c1 = new Child { Name = "Child 1" } ;
44
- var c2 = new Child { Name = "Child 2" } ;
45
- var c3 = new Child { Name = "Child 3" } ;
46
-
47
42
var p = new Parent { Name = "Parent" } ;
48
- p . Children . Add ( c1 ) ;
49
- p . Children . Add ( c2 ) ;
50
- p . Children . Add ( c3 ) ;
43
+ p . ChildrenList . Add ( new ListChild { Name = "ListChild 1" } ) ;
44
+ p . ChildrenList . Add ( new ListChild { Name = "ListChild 2" } ) ;
45
+ p . ChildrenList . Add ( new ListChild { Name = "ListChild 3" } ) ;
46
+ p . ChildrenMap . Add ( "first" , new MapChild { Name = "MapChild 1" } ) ;
47
+ p . ChildrenMap . Add ( "second" , new MapChild { Name = "MapChild 2" } ) ;
48
+ p . ChildrenMap . Add ( "third" , new MapChild { Name = "MapChild 3" } ) ;
51
49
52
50
session . Save ( p ) ;
53
51
@@ -69,16 +67,39 @@ protected override void OnTearDown()
69
67
}
70
68
71
69
[ Test ]
72
- public void Serializing_Session_After_Reordering_Children_Should_Work ( )
70
+ public void Serializing_Session_After_Reordering_ChildrenList_Should_Work ( )
71
+ {
72
+ using ( ISession session = OpenSession ( ) )
73
+ {
74
+ using ( ITransaction transaction = session . BeginTransaction ( ) )
75
+ {
76
+ var p = session . Query < Parent > ( ) . Single ( ) ;
77
+ var c = p . ChildrenList . Last ( ) ;
78
+ p . ChildrenList . Remove ( c ) ;
79
+ p . ChildrenList . Insert ( p . ChildrenList . Count - 1 , c ) ;
80
+ session . Flush ( ) ;
81
+ transaction . Commit ( ) ;
82
+ }
83
+
84
+ using ( MemoryStream stream = new MemoryStream ( ) )
85
+ {
86
+ BinaryFormatter formatter = new BinaryFormatter ( ) ;
87
+ formatter . Serialize ( stream , session ) ;
88
+
89
+ Assert . AreNotEqual ( 0 , stream . Length ) ;
90
+ }
91
+ }
92
+ }
93
+
94
+ [ Test ]
95
+ public void Serializing_Session_After_Deleting_First_Child_In_List_Should_Work ( )
73
96
{
74
97
using ( ISession session = OpenSession ( ) )
75
98
{
76
99
using ( ITransaction transaction = session . BeginTransaction ( ) )
77
100
{
78
101
var p = session . Query < Parent > ( ) . Single ( ) ;
79
- var c = p . Children . Last ( ) ;
80
- p . Children . Remove ( c ) ;
81
- p . Children . Insert ( p . Children . Count - 1 , c ) ;
102
+ p . ChildrenList . RemoveAt ( 0 ) ;
82
103
session . Flush ( ) ;
83
104
transaction . Commit ( ) ;
84
105
}
@@ -94,14 +115,19 @@ public void Serializing_Session_After_Reordering_Children_Should_Work()
94
115
}
95
116
96
117
[ Test ]
97
- public void Serializing_Session_After_Deleting_First_Child_Should_Work ( )
118
+ public void Serializing_Session_After_Changing_Key_ChildrenMap_Should_Work ( )
98
119
{
99
120
using ( ISession session = OpenSession ( ) )
100
121
{
101
122
using ( ITransaction transaction = session . BeginTransaction ( ) )
102
123
{
103
124
var p = session . Query < Parent > ( ) . Single ( ) ;
104
- p . Children . RemoveAt ( 0 ) ;
125
+ var firstChild = p . ChildrenMap [ "first" ] ;
126
+ var secondChild = p . ChildrenMap [ "second" ] ;
127
+ p . ChildrenMap . Remove ( "first" ) ;
128
+ p . ChildrenMap . Remove ( "second" ) ;
129
+ p . ChildrenMap . Add ( "first" , secondChild ) ;
130
+ p . ChildrenMap . Add ( "second" , firstChild ) ;
105
131
session . Flush ( ) ;
106
132
transaction . Commit ( ) ;
107
133
}
0 commit comments