From ce8718c5aad4cd6748494cd5a33565d1decdd86f Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 30 Mar 2026 18:17:58 +0000 Subject: [PATCH 1/3] Initial plan From 19a93daee47f6934ac1af75f9f1e2ebfe659c038 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 30 Mar 2026 18:23:22 +0000 Subject: [PATCH 2/3] Fix NpgsqlOptionsExtension losing ParameterizedCollectionMode between clones Add _parameterizedCollectionMode to the copy constructor so the value is preserved when Clone() is called by any WithXyz method. Add test verifying the mode survives a subsequent UsePostgresVersion call. Agent-Logs-Url: https://github.com/npgsql/efcore.pg/sessions/6210ab26-9cbe-4297-b483-d782610e68e9 Co-authored-by: roji <1862641+roji@users.noreply.github.com> --- .../Internal/NpgsqlOptionsExtension.cs | 1 + .../NpgsqlDbContextOptionsExtensionsTest.cs | 15 +++++++++++++++ 2 files changed, 16 insertions(+) diff --git a/src/EFCore.PG/Infrastructure/Internal/NpgsqlOptionsExtension.cs b/src/EFCore.PG/Infrastructure/Internal/NpgsqlOptionsExtension.cs index 6be7bd81a..282b26902 100644 --- a/src/EFCore.PG/Infrastructure/Internal/NpgsqlOptionsExtension.cs +++ b/src/EFCore.PG/Infrastructure/Internal/NpgsqlOptionsExtension.cs @@ -126,6 +126,7 @@ public NpgsqlOptionsExtension(NpgsqlOptionsExtension copyFrom) DataSourceBuilderAction = copyFrom.DataSourceBuilderAction; AdminDatabase = copyFrom.AdminDatabase; _postgresVersion = copyFrom._postgresVersion; + _parameterizedCollectionMode = copyFrom._parameterizedCollectionMode; UseRedshift = copyFrom.UseRedshift; _userRangeDefinitions = [..copyFrom._userRangeDefinitions]; _enumDefinitions = [..copyFrom._enumDefinitions]; diff --git a/test/EFCore.PG.Tests/NpgsqlDbContextOptionsExtensionsTest.cs b/test/EFCore.PG.Tests/NpgsqlDbContextOptionsExtensionsTest.cs index 93c749fcb..21aa9fd52 100644 --- a/test/EFCore.PG.Tests/NpgsqlDbContextOptionsExtensionsTest.cs +++ b/test/EFCore.PG.Tests/NpgsqlDbContextOptionsExtensionsTest.cs @@ -26,6 +26,21 @@ public void Can_add_extension_with_command_timeout() Assert.Equal(30, extension.CommandTimeout); } + [ConditionalFact] + public void ParameterizedCollectionMode_is_preserved_after_clone() + { + var optionsBuilder = new DbContextOptionsBuilder(); + optionsBuilder.UseNpgsql("Database=Crunchie", b => + { + b.UseParameterizedCollectionMode(ParameterTranslationMode.MultipleParameters); + b.UsePostgresVersion(new Version(17, 0)); + }); + + var extension = optionsBuilder.Options.Extensions.OfType().Single(); + + Assert.Equal(ParameterTranslationMode.MultipleParameters, extension.ParameterizedCollectionMode); + } + [ConditionalFact] public void Can_add_extension_with_connection_string() { From b81cad09a64bdbee5c306ddd03439443d81d5ac8 Mon Sep 17 00:00:00 2001 From: Shay Rojansky Date: Mon, 30 Mar 2026 21:36:34 +0300 Subject: [PATCH 3/3] Apply suggestion from @roji --- test/EFCore.PG.Tests/NpgsqlDbContextOptionsExtensionsTest.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/EFCore.PG.Tests/NpgsqlDbContextOptionsExtensionsTest.cs b/test/EFCore.PG.Tests/NpgsqlDbContextOptionsExtensionsTest.cs index 21aa9fd52..27d4446bd 100644 --- a/test/EFCore.PG.Tests/NpgsqlDbContextOptionsExtensionsTest.cs +++ b/test/EFCore.PG.Tests/NpgsqlDbContextOptionsExtensionsTest.cs @@ -33,7 +33,7 @@ public void ParameterizedCollectionMode_is_preserved_after_clone() optionsBuilder.UseNpgsql("Database=Crunchie", b => { b.UseParameterizedCollectionMode(ParameterTranslationMode.MultipleParameters); - b.UsePostgresVersion(new Version(17, 0)); + b.UseRelationalNulls(); }); var extension = optionsBuilder.Options.Extensions.OfType().Single();