Code: Select all
foreach (KeyValuePair<string, BulkTableHelper> taula in taulesUpdate)
{
using (OracleCommand command = ((OracleConnection)conn).CreateCommand())
{
int j = taula.Value.Parameters.FirstOrDefault().Value.Count;
int take = 100;
int offset = 0;
if (take > j)
take = j;
while (j > offset)
{
List<OracleParameter> parameters = new List<OracleParameter>();
int count = 0;
var snakeCaseStrategy = new SnakeCaseNamingStrategy();
string values = "";
string where = "";
foreach (KeyValuePair<string, List<object?>> parameter in taula.Value.Parameters)
{
OracleParameter par = new OracleParameter();
var paramName = snakeCaseStrategy.GetPropertyName(parameter.Key, false);
par.ParameterName = paramName;
var paramValues = parameter.Value.ToArray().Skip(offset).Take(take).ToArray();
par.Value = paramValues;
par.OracleDbType = OracleHelpers.GetOracleDbTypeFromType(taula.Value.ParametersType[parameter.Key]);
command.Parameters.Add(par);
count = parameter.Value.Count;
if (taula.Value.PrimaryKeys.Contains(parameter.Key))
{
if (!string.IsNullOrEmpty(where))
where += " AND ";
where += $" {paramName} = :{paramName} ";
}
else
{
values += $"{paramName} = :{paramName}, ";
}
}
values = values.Remove(values.LastIndexOf(","), 1);
string commandText = $"UPDATE {taula.Key} SET {values} WHERE {where}";
command.CommandText = commandText;
int result = command.ExecuteArray(take);
res += result;
if (offset + take > j)
{
take = j - offset;
offset = j;
}
}
}
}
Also I tried to update the package to version 10.0.0 but is the same.