From 40fce04a1445b511106416df96b0965366b59d54 Mon Sep 17 00:00:00 2001 From: Sipke Schoorstra Date: Mon, 27 Nov 2023 19:25:44 +0100 Subject: [PATCH] Fix BulkUpsert for EF Core 8 --- .../Extensions/QueryableExtensions.cs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/modules/Elsa.EntityFrameworkCore.Common/Extensions/QueryableExtensions.cs b/src/modules/Elsa.EntityFrameworkCore.Common/Extensions/QueryableExtensions.cs index ac4015e78..28be0c676 100644 --- a/src/modules/Elsa.EntityFrameworkCore.Common/Extensions/QueryableExtensions.cs +++ b/src/modules/Elsa.EntityFrameworkCore.Common/Extensions/QueryableExtensions.cs @@ -19,8 +19,13 @@ public static class QueryableExtensions { var set = dbContext.Set(); var compiledKeySelector = keySelector.Compile(); - var containsLambda = keySelector.BuildContainsExpression(entities); - var existingEntities = await set.AsNoTracking().Where(containsLambda).ToListAsync(cancellationToken); + var containsLambda = entities.Any() ? keySelector.BuildContainsExpression(entities) : default; + var existingEntitiesQuery = set.AsNoTracking(); + + if (containsLambda != null) + existingEntitiesQuery = existingEntitiesQuery.Where(containsLambda); + + var existingEntities = await existingEntitiesQuery.ToListAsync(cancellationToken); var entitiesToUpdate = entities.IntersectBy(existingEntities.Select(compiledKeySelector), compiledKeySelector).ToList(); var entitiesToInsert = entities.Except(entitiesToUpdate).ToList();