From 06fdfc293bea4b710f87c46db7747afb6e23c833 Mon Sep 17 00:00:00 2001 From: Waleed Khaled Date: Mon, 18 May 2026 17:49:41 +0400 Subject: [PATCH 1/2] fix ef migration with publish in run mode --- .../EFResourceBuilderExtensions.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Aspire.Hosting.EntityFrameworkCore/EFResourceBuilderExtensions.cs b/src/Aspire.Hosting.EntityFrameworkCore/EFResourceBuilderExtensions.cs index d10914c65ca..63b2c2c8b01 100644 --- a/src/Aspire.Hosting.EntityFrameworkCore/EFResourceBuilderExtensions.cs +++ b/src/Aspire.Hosting.EntityFrameworkCore/EFResourceBuilderExtensions.cs @@ -209,7 +209,8 @@ private static IResourceBuilder AddEFMigrationsCore( internal static IEnumerable CreateMigrationPipelineStep(PipelineStepFactoryContext context) { - if (context.Resource is not EFMigrationResource migrationResource + if (context.PipelineContext.ExecutionContext.IsRunMode + || context.Resource is not EFMigrationResource migrationResource || (!migrationResource.PublishAsMigrationScript && !migrationResource.PublishAsMigrationBundle)) { return []; From 9b09e9c8be0d849ef2120e80a75814ccf74b27af Mon Sep 17 00:00:00 2001 From: Sebastien Ros Date: Mon, 18 May 2026 16:00:53 -0700 Subject: [PATCH 2/2] Add EF migration run-mode pipeline regression test Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../EFMigrationPipelineTests.cs | 22 +++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/tests/Aspire.Hosting.EntityFrameworkCore.Tests/EFMigrationPipelineTests.cs b/tests/Aspire.Hosting.EntityFrameworkCore.Tests/EFMigrationPipelineTests.cs index 4bc82174a73..539a99bbcd9 100644 --- a/tests/Aspire.Hosting.EntityFrameworkCore.Tests/EFMigrationPipelineTests.cs +++ b/tests/Aspire.Hosting.EntityFrameworkCore.Tests/EFMigrationPipelineTests.cs @@ -78,6 +78,24 @@ public async Task NoPublishOptionsProducesNoSteps() Assert.Empty(steps); } + [Fact] + public async Task PublishBundleContainerProducesNoStepsInRunMode() + { + using var builder = TestDistributedApplicationBuilder.Create(); + var db = builder.AddResource(new TestDatabaseResource("mydb")); + var project = builder.AddProject("myproject"); + var migrations = project.AddEFMigrations("mymigrations", typeof(TestDbContext).FullName!) + .WaitFor(db) + .RunDatabaseUpdateOnStart() + .PublishAsMigrationBundle(publishContainer: true); + + var steps = await CreateStepsAsync(builder, migrations.Resource); + + Assert.Empty(steps); + Assert.True(migrations.Resource.PublishAsMigrationBundle); + Assert.True(migrations.Resource.PublishBundleContainer); + } + [Fact] public void WaitForConnectionStringResourceAddsWaitAnnotation() { @@ -510,7 +528,7 @@ private static async Task> CreateStepsAsync( using var serviceProvider = builder.Services.BuildServiceProvider(); var pipelineContext = new PipelineContext( serviceProvider.GetRequiredService(), - new DistributedApplicationExecutionContext(DistributedApplicationOperation.Publish), + builder.ExecutionContext, serviceProvider, NullLogger.Instance, CancellationToken.None); @@ -553,4 +571,4 @@ private sealed class TestChildDatabaseResource(string name, TestDatabaseResource public ReferenceExpression ConnectionStringExpression => ReferenceExpression.Create($"{Parent};Database={Name}"); } -} \ No newline at end of file +}