Skip to content

Commit 11b45e7

Browse files
committed
Reverted the changes in DriverBase and simplified BatchingCommandSet
1 parent 9ff621c commit 11b45e7

File tree

3 files changed

+12
-38
lines changed

3 files changed

+12
-38
lines changed

src/NHibernate/AdoNet/GenericBatchingBatcher.cs

Lines changed: 5 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -135,10 +135,10 @@ public override void CloseCommands()
135135
protected override void Dispose(bool isDisposing)
136136
{
137137
base.Dispose(isDisposing);
138-
_currentBatch.Dispose();
138+
_currentBatch.Clear();
139139
}
140140

141-
private partial class BatchingCommandSet : IDisposable
141+
private partial class BatchingCommandSet
142142
{
143143
private readonly GenericBatchingBatcher _batcher;
144144
private readonly SqlStringBuilder _sql = new SqlStringBuilder();
@@ -178,7 +178,8 @@ public void Append(DbParameterCollection parameters)
178178
{
179179
_commandType = _batcher.CurrentCommand.CommandType;
180180
}
181-
_sql.Add(PrepareSqlString(_batcher.CurrentCommandSql));
181+
182+
_sql.Add(_batcher.CurrentCommandSql.Copy());
182183
_sqlTypes.AddRange(_batcher.CurrentCommandParameterTypes);
183184

184185
foreach (DbParameter parameter in parameters)
@@ -193,6 +194,7 @@ public void Append(DbParameterCollection parameters)
193194
});
194195
}
195196
CountOfCommands++;
197+
CountOfParameters += parameters.Count;
196198
}
197199

198200
public int ExecuteNonQuery()
@@ -220,19 +222,6 @@ public int ExecuteNonQuery()
220222
return batcherCommand.ExecuteNonQuery();
221223
}
222224

223-
private SqlString PrepareSqlString(SqlString sql)
224-
{
225-
sql = sql.Copy();
226-
foreach (var part in sql)
227-
{
228-
if (part is Parameter param)
229-
{
230-
param.ParameterPosition = CountOfParameters++;
231-
}
232-
}
233-
return sql;
234-
}
235-
236225
public void Clear()
237226
{
238227
CountOfParameters = 0;
@@ -241,11 +230,6 @@ public void Clear()
241230
_sqlTypes.Clear();
242231
_parameters.Clear();
243232
}
244-
245-
public void Dispose()
246-
{
247-
Clear();
248-
}
249233
}
250234
}
251235
}

src/NHibernate/Async/AdoNet/GenericBatchingBatcher.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ protected override async Task DoExecuteBatchAsync(DbCommand ps, CancellationToke
9595
}
9696
}
9797

98-
private partial class BatchingCommandSet : IDisposable
98+
private partial class BatchingCommandSet
9999
{
100100

101101
public async Task<int> ExecuteNonQueryAsync(CancellationToken cancellationToken)

src/NHibernate/Driver/DriverBase.cs

Lines changed: 6 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ public virtual DbCommand GenerateCommand(CommandType type, SqlString sqlString,
133133

134134
SetCommandTimeout(cmd);
135135
SetCommandText(cmd, sqlString);
136-
SetCommandParameters(cmd, parameterTypes, sqlString.GetParameters().ToArray());
136+
SetCommandParameters(cmd, parameterTypes);
137137

138138
return cmd;
139139
}
@@ -156,9 +156,9 @@ protected virtual void SetCommandTimeout(DbCommand cmd)
156156
}
157157
}
158158

159-
private static string ToParameterName(int index, string prefix = null)
159+
private static string ToParameterName(int index)
160160
{
161-
return string.IsNullOrEmpty(prefix) ? "p" + index : prefix + index;
161+
return "p" + index;
162162
}
163163

164164
string ISqlParameterFormatter.GetParameterName(int index)
@@ -178,23 +178,13 @@ protected virtual SqlStringFormatter GetSqlStringFormatter()
178178
return new SqlStringFormatter(this, ";");
179179
}
180180

181-
private void SetCommandParameters(DbCommand cmd, SqlType[] sqlTypes, Parameter[] parameters)
181+
private void SetCommandParameters(DbCommand cmd, SqlType[] sqlTypes)
182182
{
183-
var usedParameters = new HashSet<int>();
184-
for (var i = 0; i < sqlTypes.Length; i++)
183+
for (int i = 0; i < sqlTypes.Length; i++)
185184
{
186-
var parameter = parameters.Length > i ? parameters[i] : null;
187-
var position = parameter?.ParameterPosition ?? i;
188-
// Use a different prefix when two or more parameters have the same position in
189-
// order to prevert a name collision. When this happens, only one parameter will
190-
// be used while the others are added to prevent an ArgumentOutOfRangeException
191-
// being thrown when NamedParameterSpecification.Bind method is called.
192-
var paramName = usedParameters.Contains(position)
193-
? ToParameterName(i, "fp")
194-
: ToParameterName(position);
185+
string paramName = ToParameterName(i);
195186
var dbParam = GenerateParameter(cmd, paramName, sqlTypes[i]);
196187
cmd.Parameters.Add(dbParam);
197-
usedParameters.Add(position);
198188
}
199189
}
200190

0 commit comments

Comments
 (0)