From 248717c1460c45cf6b3925b44e526acd878c0573 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 18 Sep 2025 00:45:10 +0000 Subject: [PATCH 1/6] Initial plan From 2ee1c52a73a31c36d16e7bed1ea56fb7703b78e4 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 18 Sep 2025 00:51:56 +0000 Subject: [PATCH 2/6] Update PostgreSQL ModelSnapshot ProductVersion to fix pending changes warning with EF Core 9 Co-authored-by: danielgerlag <2357007+danielgerlag@users.noreply.github.com> --- .../Migrations/PostgresPersistenceProviderModelSnapshot.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/providers/WorkflowCore.Persistence.PostgreSQL/Migrations/PostgresPersistenceProviderModelSnapshot.cs b/src/providers/WorkflowCore.Persistence.PostgreSQL/Migrations/PostgresPersistenceProviderModelSnapshot.cs index 0783459b..8fe59f5c 100644 --- a/src/providers/WorkflowCore.Persistence.PostgreSQL/Migrations/PostgresPersistenceProviderModelSnapshot.cs +++ b/src/providers/WorkflowCore.Persistence.PostgreSQL/Migrations/PostgresPersistenceProviderModelSnapshot.cs @@ -17,7 +17,7 @@ protected override void BuildModel(ModelBuilder modelBuilder) { #pragma warning disable 612, 618 modelBuilder - .HasAnnotation("ProductVersion", "8.0.19") + .HasAnnotation("ProductVersion", "9.0.9") .HasAnnotation("Relational:MaxIdentifierLength", 63); NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); From c8fb30ce5e4849d2a22107444207087d06afd8e8 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 18 Sep 2025 00:58:01 +0000 Subject: [PATCH 3/6] Fix ProductVersion in all EF Core persistence providers to prevent pending changes warning with EF Core 9 Co-authored-by: danielgerlag <2357007+danielgerlag@users.noreply.github.com> --- .../Migrations/MysqlPersistenceProviderModelSnapshot.cs | 2 +- .../Migrations/OracleContextModelSnapshot.cs | 2 +- .../Migrations/SqlServerPersistenceProviderModelSnapshot.cs | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/providers/WorkflowCore.Persistence.MySQL/Migrations/MysqlPersistenceProviderModelSnapshot.cs b/src/providers/WorkflowCore.Persistence.MySQL/Migrations/MysqlPersistenceProviderModelSnapshot.cs index 8a3e02e9..ab55c6b6 100644 --- a/src/providers/WorkflowCore.Persistence.MySQL/Migrations/MysqlPersistenceProviderModelSnapshot.cs +++ b/src/providers/WorkflowCore.Persistence.MySQL/Migrations/MysqlPersistenceProviderModelSnapshot.cs @@ -15,7 +15,7 @@ protected override void BuildModel(ModelBuilder modelBuilder) #pragma warning disable 612, 618 modelBuilder .HasAnnotation("Relational:MaxIdentifierLength", 64) - .HasAnnotation("ProductVersion", "5.0.8"); + .HasAnnotation("ProductVersion", "9.0.9"); modelBuilder.Entity("WorkflowCore.Persistence.EntityFramework.Models.PersistedEvent", b => { diff --git a/src/providers/WorkflowCore.Persistence.Oracle/Migrations/OracleContextModelSnapshot.cs b/src/providers/WorkflowCore.Persistence.Oracle/Migrations/OracleContextModelSnapshot.cs index 6d600dcc..d8e0e3dd 100644 --- a/src/providers/WorkflowCore.Persistence.Oracle/Migrations/OracleContextModelSnapshot.cs +++ b/src/providers/WorkflowCore.Persistence.Oracle/Migrations/OracleContextModelSnapshot.cs @@ -17,7 +17,7 @@ protected override void BuildModel(ModelBuilder modelBuilder) { #pragma warning disable 612, 618 modelBuilder - .HasAnnotation("ProductVersion", "6.0.3") + .HasAnnotation("ProductVersion", "9.0.9") .HasAnnotation("Relational:MaxIdentifierLength", 128); OracleModelBuilderExtensions.UseIdentityColumns(modelBuilder, 1L, 1); diff --git a/src/providers/WorkflowCore.Persistence.SqlServer/Migrations/SqlServerPersistenceProviderModelSnapshot.cs b/src/providers/WorkflowCore.Persistence.SqlServer/Migrations/SqlServerPersistenceProviderModelSnapshot.cs index 39da3827..d0f0a665 100644 --- a/src/providers/WorkflowCore.Persistence.SqlServer/Migrations/SqlServerPersistenceProviderModelSnapshot.cs +++ b/src/providers/WorkflowCore.Persistence.SqlServer/Migrations/SqlServerPersistenceProviderModelSnapshot.cs @@ -16,7 +16,7 @@ protected override void BuildModel(ModelBuilder modelBuilder) #pragma warning disable 612, 618 modelBuilder .HasAnnotation("Relational:MaxIdentifierLength", 128) - .HasAnnotation("ProductVersion", "5.0.8") + .HasAnnotation("ProductVersion", "9.0.9") .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn); modelBuilder.Entity("WorkflowCore.Persistence.EntityFramework.Models.PersistedEvent", b => From cb41852d44fe7542bc2e2e2e9e6b529764b9ab3f Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 18 Sep 2025 05:22:34 +0000 Subject: [PATCH 4/6] Fix ProductVersion compatibility by suppressing pending model changes warning instead of updating ModelSnapshots Co-authored-by: danielgerlag <2357007+danielgerlag@users.noreply.github.com> --- .../Services/WorkflowDbContext.cs | 5 +++++ .../Migrations/MysqlPersistenceProviderModelSnapshot.cs | 2 +- .../Migrations/OracleContextModelSnapshot.cs | 2 +- .../Migrations/PostgresPersistenceProviderModelSnapshot.cs | 2 +- .../Migrations/SqlServerPersistenceProviderModelSnapshot.cs | 2 +- 5 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/providers/WorkflowCore.Persistence.EntityFramework/Services/WorkflowDbContext.cs b/src/providers/WorkflowCore.Persistence.EntityFramework/Services/WorkflowDbContext.cs index 53e0967e..42744741 100644 --- a/src/providers/WorkflowCore.Persistence.EntityFramework/Services/WorkflowDbContext.cs +++ b/src/providers/WorkflowCore.Persistence.EntityFramework/Services/WorkflowDbContext.cs @@ -56,6 +56,11 @@ protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { base.OnConfiguring(optionsBuilder); optionsBuilder.UseQueryTrackingBehavior(QueryTrackingBehavior.NoTracking); + + // Suppress pending model changes warning when using newer EF Core versions with older ModelSnapshots + // This prevents false positive warnings when the ProductVersion in ModelSnapshot differs from runtime + optionsBuilder.ConfigureWarnings(warnings => + warnings.Ignore(Microsoft.EntityFrameworkCore.Diagnostics.RelationalEventId.PendingModelChangesWarning)); } } } diff --git a/src/providers/WorkflowCore.Persistence.MySQL/Migrations/MysqlPersistenceProviderModelSnapshot.cs b/src/providers/WorkflowCore.Persistence.MySQL/Migrations/MysqlPersistenceProviderModelSnapshot.cs index ab55c6b6..8a3e02e9 100644 --- a/src/providers/WorkflowCore.Persistence.MySQL/Migrations/MysqlPersistenceProviderModelSnapshot.cs +++ b/src/providers/WorkflowCore.Persistence.MySQL/Migrations/MysqlPersistenceProviderModelSnapshot.cs @@ -15,7 +15,7 @@ protected override void BuildModel(ModelBuilder modelBuilder) #pragma warning disable 612, 618 modelBuilder .HasAnnotation("Relational:MaxIdentifierLength", 64) - .HasAnnotation("ProductVersion", "9.0.9"); + .HasAnnotation("ProductVersion", "5.0.8"); modelBuilder.Entity("WorkflowCore.Persistence.EntityFramework.Models.PersistedEvent", b => { diff --git a/src/providers/WorkflowCore.Persistence.Oracle/Migrations/OracleContextModelSnapshot.cs b/src/providers/WorkflowCore.Persistence.Oracle/Migrations/OracleContextModelSnapshot.cs index d8e0e3dd..6d600dcc 100644 --- a/src/providers/WorkflowCore.Persistence.Oracle/Migrations/OracleContextModelSnapshot.cs +++ b/src/providers/WorkflowCore.Persistence.Oracle/Migrations/OracleContextModelSnapshot.cs @@ -17,7 +17,7 @@ protected override void BuildModel(ModelBuilder modelBuilder) { #pragma warning disable 612, 618 modelBuilder - .HasAnnotation("ProductVersion", "9.0.9") + .HasAnnotation("ProductVersion", "6.0.3") .HasAnnotation("Relational:MaxIdentifierLength", 128); OracleModelBuilderExtensions.UseIdentityColumns(modelBuilder, 1L, 1); diff --git a/src/providers/WorkflowCore.Persistence.PostgreSQL/Migrations/PostgresPersistenceProviderModelSnapshot.cs b/src/providers/WorkflowCore.Persistence.PostgreSQL/Migrations/PostgresPersistenceProviderModelSnapshot.cs index 8fe59f5c..0783459b 100644 --- a/src/providers/WorkflowCore.Persistence.PostgreSQL/Migrations/PostgresPersistenceProviderModelSnapshot.cs +++ b/src/providers/WorkflowCore.Persistence.PostgreSQL/Migrations/PostgresPersistenceProviderModelSnapshot.cs @@ -17,7 +17,7 @@ protected override void BuildModel(ModelBuilder modelBuilder) { #pragma warning disable 612, 618 modelBuilder - .HasAnnotation("ProductVersion", "9.0.9") + .HasAnnotation("ProductVersion", "8.0.19") .HasAnnotation("Relational:MaxIdentifierLength", 63); NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); diff --git a/src/providers/WorkflowCore.Persistence.SqlServer/Migrations/SqlServerPersistenceProviderModelSnapshot.cs b/src/providers/WorkflowCore.Persistence.SqlServer/Migrations/SqlServerPersistenceProviderModelSnapshot.cs index d0f0a665..39da3827 100644 --- a/src/providers/WorkflowCore.Persistence.SqlServer/Migrations/SqlServerPersistenceProviderModelSnapshot.cs +++ b/src/providers/WorkflowCore.Persistence.SqlServer/Migrations/SqlServerPersistenceProviderModelSnapshot.cs @@ -16,7 +16,7 @@ protected override void BuildModel(ModelBuilder modelBuilder) #pragma warning disable 612, 618 modelBuilder .HasAnnotation("Relational:MaxIdentifierLength", 128) - .HasAnnotation("ProductVersion", "9.0.9") + .HasAnnotation("ProductVersion", "5.0.8") .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn); modelBuilder.Entity("WorkflowCore.Persistence.EntityFramework.Models.PersistedEvent", b => From 82932f7423206ba7181f8969d25cb911edb979de Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 20 Sep 2025 00:32:03 +0000 Subject: [PATCH 5/6] Improve warning handling by logging instead of ignoring PendingModelChangesWarning Co-authored-by: danielgerlag <2357007+danielgerlag@users.noreply.github.com> --- .../Services/WorkflowDbContext.cs | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/providers/WorkflowCore.Persistence.EntityFramework/Services/WorkflowDbContext.cs b/src/providers/WorkflowCore.Persistence.EntityFramework/Services/WorkflowDbContext.cs index 42744741..7661f411 100644 --- a/src/providers/WorkflowCore.Persistence.EntityFramework/Services/WorkflowDbContext.cs +++ b/src/providers/WorkflowCore.Persistence.EntityFramework/Services/WorkflowDbContext.cs @@ -57,10 +57,15 @@ protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) base.OnConfiguring(optionsBuilder); optionsBuilder.UseQueryTrackingBehavior(QueryTrackingBehavior.NoTracking); - // Suppress pending model changes warning when using newer EF Core versions with older ModelSnapshots - // This prevents false positive warnings when the ProductVersion in ModelSnapshot differs from runtime + // Configure warning handling for PendingModelChangesWarning + // This warning can be triggered by: + // 1. ProductVersion mismatch (false positive when using EF Core 9.x with older snapshots) + // 2. Legitimate model changes that need migrations + // + // We convert the warning to a log message so developers can still see it in logs + // but it won't throw an exception that prevents application startup optionsBuilder.ConfigureWarnings(warnings => - warnings.Ignore(Microsoft.EntityFrameworkCore.Diagnostics.RelationalEventId.PendingModelChangesWarning)); + warnings.Log(Microsoft.EntityFrameworkCore.Diagnostics.RelationalEventId.PendingModelChangesWarning)); } } } From 216a1e32c96fae9536e6c6c4eb364bff3534b0d9 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 20 Sep 2025 16:26:20 +0000 Subject: [PATCH 6/6] Implement dynamic ProductVersion based on target framework using preprocessor directives Co-authored-by: danielgerlag <2357007+danielgerlag@users.noreply.github.com> --- .../Services/WorkflowDbContext.cs | 10 ---------- .../MysqlPersistenceProviderModelSnapshot.cs | 11 ++++++++++- .../Migrations/OracleContextModelSnapshot.cs | 8 +++++++- .../PostgresPersistenceProviderModelSnapshot.cs | 10 +++++++++- .../SqlServerPersistenceProviderModelSnapshot.cs | 10 +++++++++- 5 files changed, 35 insertions(+), 14 deletions(-) diff --git a/src/providers/WorkflowCore.Persistence.EntityFramework/Services/WorkflowDbContext.cs b/src/providers/WorkflowCore.Persistence.EntityFramework/Services/WorkflowDbContext.cs index 7661f411..53e0967e 100644 --- a/src/providers/WorkflowCore.Persistence.EntityFramework/Services/WorkflowDbContext.cs +++ b/src/providers/WorkflowCore.Persistence.EntityFramework/Services/WorkflowDbContext.cs @@ -56,16 +56,6 @@ protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { base.OnConfiguring(optionsBuilder); optionsBuilder.UseQueryTrackingBehavior(QueryTrackingBehavior.NoTracking); - - // Configure warning handling for PendingModelChangesWarning - // This warning can be triggered by: - // 1. ProductVersion mismatch (false positive when using EF Core 9.x with older snapshots) - // 2. Legitimate model changes that need migrations - // - // We convert the warning to a log message so developers can still see it in logs - // but it won't throw an exception that prevents application startup - optionsBuilder.ConfigureWarnings(warnings => - warnings.Log(Microsoft.EntityFrameworkCore.Diagnostics.RelationalEventId.PendingModelChangesWarning)); } } } diff --git a/src/providers/WorkflowCore.Persistence.MySQL/Migrations/MysqlPersistenceProviderModelSnapshot.cs b/src/providers/WorkflowCore.Persistence.MySQL/Migrations/MysqlPersistenceProviderModelSnapshot.cs index 8a3e02e9..59d48fac 100644 --- a/src/providers/WorkflowCore.Persistence.MySQL/Migrations/MysqlPersistenceProviderModelSnapshot.cs +++ b/src/providers/WorkflowCore.Persistence.MySQL/Migrations/MysqlPersistenceProviderModelSnapshot.cs @@ -15,7 +15,16 @@ protected override void BuildModel(ModelBuilder modelBuilder) #pragma warning disable 612, 618 modelBuilder .HasAnnotation("Relational:MaxIdentifierLength", 64) - .HasAnnotation("ProductVersion", "5.0.8"); +#if NETSTANDARD2_1 + .HasAnnotation("ProductVersion", "5.0.1") +#elif NET6_0 + .HasAnnotation("ProductVersion", "7.0.0") +#elif NET8_0 + .HasAnnotation("ProductVersion", "9.0.9") +#else + .HasAnnotation("ProductVersion", "9.0.9") +#endif + ; modelBuilder.Entity("WorkflowCore.Persistence.EntityFramework.Models.PersistedEvent", b => { diff --git a/src/providers/WorkflowCore.Persistence.Oracle/Migrations/OracleContextModelSnapshot.cs b/src/providers/WorkflowCore.Persistence.Oracle/Migrations/OracleContextModelSnapshot.cs index 6d600dcc..7d88a022 100644 --- a/src/providers/WorkflowCore.Persistence.Oracle/Migrations/OracleContextModelSnapshot.cs +++ b/src/providers/WorkflowCore.Persistence.Oracle/Migrations/OracleContextModelSnapshot.cs @@ -17,7 +17,13 @@ protected override void BuildModel(ModelBuilder modelBuilder) { #pragma warning disable 612, 618 modelBuilder - .HasAnnotation("ProductVersion", "6.0.3") +#if NET6_0 + .HasAnnotation("ProductVersion", "7.0.0") +#elif NET8_0 + .HasAnnotation("ProductVersion", "9.0.9") +#else + .HasAnnotation("ProductVersion", "9.0.9") +#endif .HasAnnotation("Relational:MaxIdentifierLength", 128); OracleModelBuilderExtensions.UseIdentityColumns(modelBuilder, 1L, 1); diff --git a/src/providers/WorkflowCore.Persistence.PostgreSQL/Migrations/PostgresPersistenceProviderModelSnapshot.cs b/src/providers/WorkflowCore.Persistence.PostgreSQL/Migrations/PostgresPersistenceProviderModelSnapshot.cs index 0783459b..5feae3a1 100644 --- a/src/providers/WorkflowCore.Persistence.PostgreSQL/Migrations/PostgresPersistenceProviderModelSnapshot.cs +++ b/src/providers/WorkflowCore.Persistence.PostgreSQL/Migrations/PostgresPersistenceProviderModelSnapshot.cs @@ -17,7 +17,15 @@ protected override void BuildModel(ModelBuilder modelBuilder) { #pragma warning disable 612, 618 modelBuilder - .HasAnnotation("ProductVersion", "8.0.19") +#if NETSTANDARD2_1 + .HasAnnotation("ProductVersion", "5.0.1") +#elif NET6_0 + .HasAnnotation("ProductVersion", "7.0.0") +#elif NET8_0 + .HasAnnotation("ProductVersion", "9.0.9") +#else + .HasAnnotation("ProductVersion", "9.0.9") +#endif .HasAnnotation("Relational:MaxIdentifierLength", 63); NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); diff --git a/src/providers/WorkflowCore.Persistence.SqlServer/Migrations/SqlServerPersistenceProviderModelSnapshot.cs b/src/providers/WorkflowCore.Persistence.SqlServer/Migrations/SqlServerPersistenceProviderModelSnapshot.cs index 39da3827..299cdb31 100644 --- a/src/providers/WorkflowCore.Persistence.SqlServer/Migrations/SqlServerPersistenceProviderModelSnapshot.cs +++ b/src/providers/WorkflowCore.Persistence.SqlServer/Migrations/SqlServerPersistenceProviderModelSnapshot.cs @@ -16,7 +16,15 @@ protected override void BuildModel(ModelBuilder modelBuilder) #pragma warning disable 612, 618 modelBuilder .HasAnnotation("Relational:MaxIdentifierLength", 128) - .HasAnnotation("ProductVersion", "5.0.8") +#if NETSTANDARD2_1 + .HasAnnotation("ProductVersion", "5.0.1") +#elif NET6_0 + .HasAnnotation("ProductVersion", "7.0.0") +#elif NET8_0 || NET9_0 + .HasAnnotation("ProductVersion", "9.0.9") +#else + .HasAnnotation("ProductVersion", "9.0.9") +#endif .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn); modelBuilder.Entity("WorkflowCore.Persistence.EntityFramework.Models.PersistedEvent", b =>