@@ -68,6 +68,8 @@ public MySqlParameter AddWithValue(string parameterName, object? value)
68
68
69
69
public override void Clear ( )
70
70
{
71
+ foreach ( var parameter in m_parameters )
72
+ parameter . ParameterCollection = null ;
71
73
m_parameters . Clear ( ) ;
72
74
m_nameToIndex . Clear ( ) ;
73
75
}
@@ -113,6 +115,7 @@ public override void RemoveAt(int index)
113
115
var oldParameter = m_parameters [ index ] ;
114
116
if ( oldParameter . NormalizedParameterName is object )
115
117
m_nameToIndex . Remove ( oldParameter . NormalizedParameterName ) ;
118
+ oldParameter . ParameterCollection = null ;
116
119
m_parameters . RemoveAt ( index ) ;
117
120
118
121
foreach ( var pair in m_nameToIndex . ToList ( ) )
@@ -130,9 +133,11 @@ protected override void SetParameter(int index, DbParameter value)
130
133
var oldParameter = m_parameters [ index ] ;
131
134
if ( oldParameter . NormalizedParameterName is object )
132
135
m_nameToIndex . Remove ( oldParameter . NormalizedParameterName ) ;
136
+ oldParameter . ParameterCollection = null ;
133
137
m_parameters [ index ] = newParameter ;
134
138
if ( newParameter . NormalizedParameterName is object )
135
139
m_nameToIndex . Add ( newParameter . NormalizedParameterName , index ) ;
140
+ newParameter . ParameterCollection = this ;
136
141
}
137
142
138
143
protected override void SetParameter ( string parameterName , DbParameter value ) => SetParameter ( IndexOf ( parameterName ) , value ) ;
@@ -153,13 +158,29 @@ protected override void SetParameter(int index, DbParameter value)
153
158
set => SetParameter ( name , value ) ;
154
159
}
155
160
161
+ internal void ChangeParameterName ( MySqlParameter parameter , string oldName , string newName )
162
+ {
163
+ if ( m_nameToIndex . TryGetValue ( oldName , out var index ) && m_parameters [ index ] == parameter )
164
+ m_nameToIndex . Remove ( oldName ) ;
165
+ else
166
+ index = m_parameters . IndexOf ( parameter ) ;
167
+
168
+ if ( newName . Length != 0 )
169
+ {
170
+ if ( m_nameToIndex . ContainsKey ( newName ) )
171
+ throw new MySqlException ( @"There is already a parameter with the name '{0}' in this collection." . FormatInvariant ( parameter . ParameterName ) ) ;
172
+ m_nameToIndex [ newName ] = index ;
173
+ }
174
+ }
175
+
156
176
private void AddParameter ( MySqlParameter parameter )
157
177
{
158
178
if ( ! string . IsNullOrEmpty ( parameter . NormalizedParameterName ) && NormalizedIndexOf ( parameter . NormalizedParameterName ) != - 1 )
159
179
throw new MySqlException ( @"Parameter '{0}' has already been defined." . FormatInvariant ( parameter . ParameterName ) ) ;
160
180
m_parameters . Add ( parameter ) ;
161
181
if ( ! string . IsNullOrEmpty ( parameter . NormalizedParameterName ) )
162
182
m_nameToIndex [ parameter . NormalizedParameterName ] = m_parameters . Count - 1 ;
183
+ parameter . ParameterCollection = this ;
163
184
}
164
185
165
186
readonly List < MySqlParameter > m_parameters ;
0 commit comments