Skip to content

Commit 40d0d27

Browse files
committed
Don't throw PendingModelChangesWarning when applying a specific migration
Fixes #35342
1 parent b8ddc5b commit 40d0d27

File tree

4 files changed

+15
-16
lines changed

4 files changed

+15
-16
lines changed

src/EFCore.Relational/Migrations/Internal/Migrator.cs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ public Migrator(
9494
public virtual void Migrate(string? targetMigration)
9595
{
9696
var useTransaction = _connection.CurrentTransaction is null;
97-
ValidateMigrations(useTransaction);
97+
ValidateMigrations(useTransaction, targetMigration);
9898

9999
using var transactionScope = new TransactionScope(TransactionScopeOption.Suppress, TransactionScopeAsyncFlowOption.Enabled);
100100

@@ -219,7 +219,7 @@ public virtual async Task MigrateAsync(
219219
CancellationToken cancellationToken = default)
220220
{
221221
var useTransaction = _connection.CurrentTransaction is null;
222-
ValidateMigrations(useTransaction);
222+
ValidateMigrations(useTransaction, targetMigration);
223223

224224
using var transactionScope = new TransactionScope(TransactionScopeOption.Suppress, TransactionScopeAsyncFlowOption.Enabled);
225225

@@ -349,7 +349,7 @@ await _migrationCommandExecutor.ExecuteNonQueryAsync(
349349
}
350350
}
351351

352-
private void ValidateMigrations(bool useTransaction)
352+
private void ValidateMigrations(bool useTransaction, string? targetMigration)
353353
{
354354
if (!useTransaction
355355
&& _executionStrategy.RetriesOnFailure)
@@ -365,7 +365,8 @@ private void ValidateMigrations(bool useTransaction)
365365
{
366366
_logger.ModelSnapshotNotFound(this, _migrationsAssembly);
367367
}
368-
else if (RelationalResources.LogPendingModelChanges(_logger).WarningBehavior != WarningBehavior.Ignore
368+
else if (targetMigration == null
369+
&& RelationalResources.LogPendingModelChanges(_logger).WarningBehavior != WarningBehavior.Ignore
369370
&& HasPendingModelChanges())
370371
{
371372
var modelSource = (ModelSource)_currentContext.Context.GetService<IModelSource>();

test/EFCore.Specification.Tests/DataBindingTestBase.cs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -281,32 +281,32 @@ public virtual void Remove_detached_entity_from_LocalView(bool toObservableColle
281281
Assert.Equal(2, local.ToList().Count);
282282

283283
Assert.True(local.Contains(driver1));
284-
Assert.True(localView.Contains(driver1));
284+
Assert.Contains(driver1, localView);
285285
Assert.True(local.Contains(driver2));
286-
Assert.True(localView.Contains(driver2));
286+
Assert.Contains(driver2, localView);
287287
Assert.False(local.Contains(driver3));
288-
Assert.False(localView.Contains(driver3));
288+
Assert.DoesNotContain(driver3, localView);
289289

290290
context.Entry(driver3);
291291

292292
Assert.True(local.Contains(driver1));
293-
Assert.True(localView.Contains(driver1));
293+
Assert.Contains(driver1, localView);
294294
Assert.True(local.Contains(driver2));
295-
Assert.True(localView.Contains(driver2));
295+
Assert.Contains(driver2, localView);
296296
Assert.False(local.Contains(driver3));
297-
Assert.False(localView.Contains(driver3));
297+
Assert.DoesNotContain(driver3, localView);
298298

299299
local.Remove(driver3);
300300

301301
Assert.Equal(2, local.Count);
302302
Assert.Equal(2, local.ToList().Count);
303303

304304
Assert.True(local.Contains(driver1));
305-
Assert.True(localView.Contains(driver1));
305+
Assert.Contains(driver1, localView);
306306
Assert.True(local.Contains(driver2));
307-
Assert.True(localView.Contains(driver2));
307+
Assert.Contains(driver2, localView);
308308
Assert.False(local.Contains(driver3));
309-
Assert.False(localView.Contains(driver3));
309+
Assert.DoesNotContain(driver3, localView);
310310
}
311311

312312
[ConditionalTheory]

test/EFCore.SqlServer.FunctionalTests/Migrations/MigrationsInfrastructureSqlServerTest.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -807,8 +807,7 @@ public async Task Empty_Migration_Creates_Database()
807807
{
808808
using var context = new BloggingContext(
809809
Fixture.TestStore.AddProviderOptions(
810-
new DbContextOptionsBuilder().EnableServiceProviderCaching(false))
811-
.ConfigureWarnings(e => e.Log(RelationalEventId.PendingModelChangesWarning)).Options);
810+
new DbContextOptionsBuilder().EnableServiceProviderCaching(false)).Options);
812811

813812
context.Database.EnsureDeleted();
814813
GiveMeSomeTime(context);

test/EFCore.SqlServer.FunctionalTests/Query/JsonQueryJsonTypeSqlServerFixture.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@ protected override void OnModelCreating(ModelBuilder modelBuilder, DbContext con
2626
b =>
2727
{
2828
b.OwnsOne(x => x.OwnedReferenceRoot).ToJson("json_reference_custom_naming").HasColumnType("json");
29-
;
3029
b.OwnsMany(x => x.OwnedCollectionRoot).HasColumnType("json").ToJson("json_collection_custom_naming");
3130
});
3231

0 commit comments

Comments
 (0)