@@ -72,6 +72,7 @@ Name nvarchar(200) null,
72
72
DateOfBirth datetime null,
73
73
Savings decimal null
74
74
)" ) ;
75
+ db . Execute ( @"alter table Users add constraint Users_Name_Age_UQ unique (Name, Age)" ) ;
75
76
db . Execute ( @"alter table Users
76
77
enable CHANGE_TRACKING
77
78
with (TRACK_COLUMNS_UPDATED = OFF)" ) ;
@@ -462,6 +463,53 @@ public void IntermediateTest()
462
463
}
463
464
}
464
465
466
+ [ Test ]
467
+ public void UniqueTest ( )
468
+ {
469
+ try
470
+ {
471
+ CreateUsersTable ( ) ;
472
+
473
+ var sourceUser = new User { Name = "Michael Jordan" , Age = 54 , DateOfBirth = new DateTime ( 1963 , 2 , 17 ) , Savings = 1.31m * 1e9m } ;
474
+ var sourceUser2 = new User { Name = "Michael Jordan" , Age = 55 , DateOfBirth = new DateTime ( 1963 , 2 , 17 ) , Savings = 1.31m * 1e9m } ;
475
+
476
+ using ( var db = GetDatabase ( SourceDatabaseName ) )
477
+ {
478
+ db . Insert ( sourceUser ) ;
479
+ }
480
+
481
+ var synchronizer = new Synchronizer ( TestConfig ) ;
482
+ var success = synchronizer . Sync ( ) ;
483
+
484
+ Assert . That ( success , Is . True ) ;
485
+
486
+ using ( var db = GetDatabase ( SourceDatabaseName ) )
487
+ {
488
+ db . Insert ( sourceUser2 ) ;
489
+ sourceUser . Age = 56 ;
490
+ db . Update ( sourceUser ) ;
491
+ sourceUser2 . Age = 54 ;
492
+ db . Update ( sourceUser2 ) ;
493
+ }
494
+
495
+ success = synchronizer . Sync ( ) ;
496
+
497
+ Assert . That ( success , Is . True ) ;
498
+
499
+ using ( var db = GetDatabase ( DestinationDatabaseName ) )
500
+ {
501
+ var users = db . Fetch < User > ( "select * from Users" ) ;
502
+ Assert . That ( users . Count , Is . EqualTo ( 2 ) ) ;
503
+ Assert . That ( users [ 0 ] . Age , Is . EqualTo ( 56 ) ) ;
504
+ Assert . That ( users [ 1 ] . Age , Is . EqualTo ( 54 ) ) ;
505
+ }
506
+ }
507
+ finally
508
+ {
509
+ DropTable ( "Users" ) ;
510
+ }
511
+ }
512
+
465
513
[ Test ]
466
514
public void NullConfigTest ( )
467
515
{
0 commit comments