Skip to content

Commit 8fd4b43

Browse files
mgravellvonzshik
authored andcommitted
NpgsqlParameterCollection.Clone() should set correct collection instance (#6066)
fix #6065 (cherry picked from commit e8ce19f)
1 parent f38f935 commit 8fd4b43

File tree

2 files changed

+14
-1
lines changed

2 files changed

+14
-1
lines changed

src/Npgsql/NpgsqlParameterCollection.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -664,7 +664,7 @@ internal void CloneTo(NpgsqlParameterCollection other)
664664
foreach (var param in InternalList)
665665
{
666666
var newParam = param.Clone();
667-
newParam.Collection = this;
667+
newParam.Collection = other;
668668
other.InternalList.Add(newParam);
669669
}
670670

test/Npgsql.Tests/NpgsqlParameterCollectionTests.cs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
using System.Data;
55
using System.Data.Common;
66
using System.Diagnostics.CodeAnalysis;
7+
using System.Linq;
78

89
namespace Npgsql.Tests;
910

@@ -320,6 +321,18 @@ public void Clean_name()
320321
Assert.AreEqual(NpgsqlParameter.PositionalName, param.ParameterName);
321322
}
322323

324+
[Test]
325+
public void Clone_sets_correct_collection()
326+
{
327+
var cmd = new NpgsqlCommand();
328+
cmd.Parameters.Add(new NpgsqlParameter<int> { TypedValue = 42 });
329+
Assert.AreSame(cmd.Parameters, cmd.Parameters.Single().Collection);
330+
331+
cmd = cmd.Clone();
332+
Assert.AreSame(cmd.Parameters, cmd.Parameters.Single().Collection);
333+
}
334+
335+
323336
public NpgsqlParameterCollectionTests(CompatMode compatMode)
324337
{
325338
_compatMode = compatMode;

0 commit comments

Comments
 (0)