@@ -50,6 +50,8 @@ protected override void OnTearDown()
50
50
await ( s . DeleteAsync ( "from Competition" , cancellationToken ) ) ;
51
51
52
52
await ( s . DeleteAsync ( "from Employer" , cancellationToken ) ) ;
53
+ await ( s . DeleteAsync ( "from Address" , cancellationToken ) ) ;
54
+ await ( s . DeleteAsync ( "from Person" , cancellationToken ) ) ;
53
55
54
56
await ( tx . CommitAsync ( cancellationToken ) ) ;
55
57
}
@@ -76,6 +78,8 @@ private void Cleanup()
76
78
s . Delete ( "from Competition" ) ;
77
79
78
80
s . Delete ( "from Employer" ) ;
81
+ s . Delete ( "from Address" ) ;
82
+ s . Delete ( "from Person" ) ;
79
83
80
84
tx . Commit ( ) ;
81
85
}
@@ -156,6 +160,41 @@ public async Task MergeBidiForeignKeyOneToOneAsync()
156
160
}
157
161
}
158
162
163
+ [ Test ]
164
+ public async Task MergeBidiPrimayKeyOneToOneAsync ( )
165
+ {
166
+ Person p ;
167
+ using ( ISession s = OpenSession ( ) )
168
+ using ( ITransaction tx = s . BeginTransaction ( ) )
169
+ {
170
+ p = new Person { Name = "steve" } ;
171
+ new PersonalDetails { SomePersonalDetail = "I have big feet" , Person = p } ;
172
+ await ( s . PersistAsync ( p ) ) ;
173
+ await ( tx . CommitAsync ( ) ) ;
174
+ }
175
+
176
+ ClearCounts ( ) ;
177
+
178
+ p . Details . SomePersonalDetail = p . Details . SomePersonalDetail + " and big hands too" ;
179
+ using ( ISession s = OpenSession ( ) )
180
+ using ( ITransaction tx = s . BeginTransaction ( ) )
181
+ {
182
+ p = ( Person ) await ( s . MergeAsync ( p ) ) ;
183
+ await ( tx . CommitAsync ( ) ) ;
184
+ }
185
+
186
+ AssertInsertCount ( 0 ) ;
187
+ AssertUpdateCount ( 1 ) ;
188
+ AssertDeleteCount ( 0 ) ;
189
+
190
+ using ( ISession s = OpenSession ( ) )
191
+ using ( ITransaction tx = s . BeginTransaction ( ) )
192
+ {
193
+ await ( s . DeleteAsync ( p ) ) ;
194
+ await ( tx . CommitAsync ( ) ) ;
195
+ }
196
+ }
197
+
159
198
[ Test ]
160
199
public async Task MergeDeepTreeAsync ( )
161
200
{
0 commit comments