@@ -285,6 +285,62 @@ await history.GetAppliedMigrationsAsync(),
285
285
x => Assert . Equal ( "00000000000002_Migration2" , x . MigrationId ) ) ;
286
286
}
287
287
288
+ [ ConditionalFact ]
289
+ public virtual void Can_apply_two_migrations_in_transaction ( )
290
+ {
291
+ using var db = Fixture . CreateContext ( ) ;
292
+ db . Database . EnsureDeleted ( ) ;
293
+ GiveMeSomeTime ( db ) ;
294
+ db . GetService < IRelationalDatabaseCreator > ( ) . Create ( ) ;
295
+
296
+ var strategy = db . Database . CreateExecutionStrategy ( ) ;
297
+ strategy . Execute ( ( ) =>
298
+ {
299
+ using var transaction = db . Database . BeginTransaction ( ) ;
300
+ var migrator = db . GetService < IMigrator > ( ) ;
301
+ migrator . Migrate ( "Migration1" ) ;
302
+ migrator . Migrate ( "Migration2" ) ;
303
+
304
+ var history = db . GetService < IHistoryRepository > ( ) ;
305
+ Assert . Collection (
306
+ history . GetAppliedMigrations ( ) ,
307
+ x => Assert . Equal ( "00000000000001_Migration1" , x . MigrationId ) ,
308
+ x => Assert . Equal ( "00000000000002_Migration2" , x . MigrationId ) ) ;
309
+ } ) ;
310
+
311
+ Assert . Equal (
312
+ LogLevel . Warning ,
313
+ Fixture . TestSqlLoggerFactory . Log . First ( l => l . Id == RelationalEventId . MigrationsUserTransactionWarning ) . Level ) ;
314
+ }
315
+
316
+ [ ConditionalFact ]
317
+ public virtual async Task Can_apply_two_migrations_in_transaction_async ( )
318
+ {
319
+ using var db = Fixture . CreateContext ( ) ;
320
+ await db . Database . EnsureDeletedAsync ( ) ;
321
+ await GiveMeSomeTimeAsync ( db ) ;
322
+ await db . GetService < IRelationalDatabaseCreator > ( ) . CreateAsync ( ) ;
323
+
324
+ var strategy = db . Database . CreateExecutionStrategy ( ) ;
325
+ await strategy . ExecuteAsync ( async ( ) =>
326
+ {
327
+ using var transaction = db . Database . BeginTransactionAsync ( ) ;
328
+ var migrator = db . GetService < IMigrator > ( ) ;
329
+ await migrator . MigrateAsync ( "Migration1" ) ;
330
+ await migrator . MigrateAsync ( "Migration2" ) ;
331
+
332
+ var history = db . GetService < IHistoryRepository > ( ) ;
333
+ Assert . Collection (
334
+ await history . GetAppliedMigrationsAsync ( ) ,
335
+ x => Assert . Equal ( "00000000000001_Migration1" , x . MigrationId ) ,
336
+ x => Assert . Equal ( "00000000000002_Migration2" , x . MigrationId ) ) ;
337
+ } ) ;
338
+
339
+ Assert . Equal (
340
+ LogLevel . Warning ,
341
+ Fixture . TestSqlLoggerFactory . Log . First ( l => l . Id == RelationalEventId . MigrationsUserTransactionWarning ) . Level ) ;
342
+ }
343
+
288
344
[ ConditionalFact ]
289
345
public virtual async Task Can_generate_no_migration_script ( )
290
346
{
@@ -549,6 +605,7 @@ public override DbContextOptionsBuilder AddOptions(DbContextOptionsBuilder build
549
605
e => e
550
606
. Log ( RelationalEventId . PendingModelChangesWarning )
551
607
. Log ( RelationalEventId . NonTransactionalMigrationOperationWarning )
608
+ . Log ( RelationalEventId . MigrationsUserTransactionWarning )
552
609
) ;
553
610
554
611
protected override bool ShouldLogCategory ( string logCategory )
0 commit comments