Skip to content

Commit 19a93da

Browse files
Copilotroji
andcommitted
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>
1 parent ce8718c commit 19a93da

File tree

2 files changed

+16
-0
lines changed

2 files changed

+16
-0
lines changed

src/EFCore.PG/Infrastructure/Internal/NpgsqlOptionsExtension.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,7 @@ public NpgsqlOptionsExtension(NpgsqlOptionsExtension copyFrom)
126126
DataSourceBuilderAction = copyFrom.DataSourceBuilderAction;
127127
AdminDatabase = copyFrom.AdminDatabase;
128128
_postgresVersion = copyFrom._postgresVersion;
129+
_parameterizedCollectionMode = copyFrom._parameterizedCollectionMode;
129130
UseRedshift = copyFrom.UseRedshift;
130131
_userRangeDefinitions = [..copyFrom._userRangeDefinitions];
131132
_enumDefinitions = [..copyFrom._enumDefinitions];

test/EFCore.PG.Tests/NpgsqlDbContextOptionsExtensionsTest.cs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,21 @@ public void Can_add_extension_with_command_timeout()
2626
Assert.Equal(30, extension.CommandTimeout);
2727
}
2828

29+
[ConditionalFact]
30+
public void ParameterizedCollectionMode_is_preserved_after_clone()
31+
{
32+
var optionsBuilder = new DbContextOptionsBuilder();
33+
optionsBuilder.UseNpgsql("Database=Crunchie", b =>
34+
{
35+
b.UseParameterizedCollectionMode(ParameterTranslationMode.MultipleParameters);
36+
b.UsePostgresVersion(new Version(17, 0));
37+
});
38+
39+
var extension = optionsBuilder.Options.Extensions.OfType<NpgsqlOptionsExtension>().Single();
40+
41+
Assert.Equal(ParameterTranslationMode.MultipleParameters, extension.ParameterizedCollectionMode);
42+
}
43+
2944
[ConditionalFact]
3045
public void Can_add_extension_with_connection_string()
3146
{

0 commit comments

Comments
 (0)