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 []; 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 +}