From 2240a78dd342954854e38ccfc845d2fc2855dff2 Mon Sep 17 00:00:00 2001 From: Sipke Schoorstra Date: Mon, 17 Feb 2025 18:24:14 +0100 Subject: [PATCH] Refactor parameter naming in BulkUpsert logic. Replaced loop index-based parameter naming with a sequential counter to simplify and standardize parameter generation. Improved code readability and removed redundant indexing, ensuring consistency across different database operations. --- .../Extensions/BulkUpsertExtensions.cs | 25 ++++++++++--------- 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/src/modules/Elsa.EntityFrameworkCore.Common/Extensions/BulkUpsertExtensions.cs b/src/modules/Elsa.EntityFrameworkCore.Common/Extensions/BulkUpsertExtensions.cs index 212edb898..337ed9ce3 100644 --- a/src/modules/Elsa.EntityFrameworkCore.Common/Extensions/BulkUpsertExtensions.cs +++ b/src/modules/Elsa.EntityFrameworkCore.Common/Extensions/BulkUpsertExtensions.cs @@ -106,15 +106,16 @@ public static class BulkUpsertExtensions mergeSql.AppendLine("USING (VALUES"); var parameters = new List(); + var parameterCount = 0; + for (var i = 0; i < entities.Count; i++) { var entity = entities[i]; var values = new List(); - for (var j = 0; j < props.Count; j++) + foreach (var property in props) { - var property = props[j]; - var paramName = $"@p{i}_{j}"; + var paramName = $"{{{parameterCount++}}}"; // If it's a shadow property, retrieve value via Entry(..).Property(..) object? value = property.IsShadowProperty() @@ -160,6 +161,7 @@ public static class BulkUpsertExtensions var sb = new StringBuilder(); var parameters = new List(); + var parameterCount = 0; sb.Append($"INSERT INTO \"{tableName}\" ({string.Join(", ", columnNames.Select(c => $"\"{c}\""))}) VALUES "); @@ -168,10 +170,9 @@ public static class BulkUpsertExtensions var entity = entities[i]; var placeholders = new List(); - for (var j = 0; j < props.Count; j++) + foreach (var property in props) { - var property = props[j]; - var paramName = $"@p{i}_{j}"; + var paramName = $"{{{parameterCount++}}}"; object? value = property.IsShadowProperty() ? dbContext.Entry(entity).Property(property.Name).CurrentValue @@ -276,6 +277,7 @@ public static class BulkUpsertExtensions var sb = new StringBuilder(); var parameters = new List(); + var parameterCount = 0; sb.Append($"INSERT INTO `{tableName}` ({string.Join(", ", columnNames.Select(c => $"`{c}`"))}) VALUES "); @@ -284,10 +286,9 @@ public static class BulkUpsertExtensions var entity = entities[i]; var placeholders = new List(); - for (var j = 0; j < props.Count; j++) + foreach (var property in props) { - var property = props[j]; - var paramName = $"@p{i}_{j}"; + var paramName = $"{{{parameterCount++}}}"; object? value = property.IsShadowProperty() ? dbContext.Entry(entity).Property(property.Name).CurrentValue @@ -337,6 +338,7 @@ public static class BulkUpsertExtensions var sb = new StringBuilder(); var parameters = new List(); + var parameterCount = 0; sb.AppendLine($"MERGE INTO {fullName} Target"); sb.AppendLine("USING (SELECT"); @@ -346,10 +348,9 @@ public static class BulkUpsertExtensions var entity = entities[i]; var lineParts = new List(); - for (var j = 0; j < props.Count; j++) + foreach (var property in props) { - var property = props[j]; - var paramName = $":p{i}_{j}"; + var paramName = $"{{{parameterCount++}}}"; object? value = property.IsShadowProperty() ? dbContext.Entry(entity).Property(property.Name).CurrentValue