From 064ddccf25ad48face79c285218af27f309a574d Mon Sep 17 00:00:00 2001 From: megamanhxh Date: Tue, 24 Aug 2021 11:28:04 +0300 Subject: [PATCH] Fix EFCore.BulkExtensions does not support Oracle --- .../Extensions/OracleDatabaseFacadeExtensions.cs | 9 +++++++++ .../Extensions/QueryableBulkExtensions.cs | 3 ++- 2 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 src/persistence/Elsa.Persistence.EntityFramework/Elsa.Persistence.EntityFramework.Core/Extensions/OracleDatabaseFacadeExtensions.cs diff --git a/src/persistence/Elsa.Persistence.EntityFramework/Elsa.Persistence.EntityFramework.Core/Extensions/OracleDatabaseFacadeExtensions.cs b/src/persistence/Elsa.Persistence.EntityFramework/Elsa.Persistence.EntityFramework.Core/Extensions/OracleDatabaseFacadeExtensions.cs new file mode 100644 index 000000000..57b284338 --- /dev/null +++ b/src/persistence/Elsa.Persistence.EntityFramework/Elsa.Persistence.EntityFramework.Core/Extensions/OracleDatabaseFacadeExtensions.cs @@ -0,0 +1,9 @@ +using Microsoft.EntityFrameworkCore.Infrastructure; + +namespace Elsa.Persistence.EntityFramework.Core.Extensions +{ + internal static class OracleDatabaseFacadeExtensions + { + public static bool IsOracle(this DatabaseFacade database) => database.ProviderName == "Oracle.EntityFrameworkCore"; + } +} \ No newline at end of file diff --git a/src/persistence/Elsa.Persistence.EntityFramework/Elsa.Persistence.EntityFramework.Core/Extensions/QueryableBulkExtensions.cs b/src/persistence/Elsa.Persistence.EntityFramework/Elsa.Persistence.EntityFramework.Core/Extensions/QueryableBulkExtensions.cs index 412f3b9c3..2eb89b56f 100644 --- a/src/persistence/Elsa.Persistence.EntityFramework/Elsa.Persistence.EntityFramework.Core/Extensions/QueryableBulkExtensions.cs +++ b/src/persistence/Elsa.Persistence.EntityFramework/Elsa.Persistence.EntityFramework.Core/Extensions/QueryableBulkExtensions.cs @@ -10,10 +10,11 @@ namespace Elsa.Persistence.EntityFramework.Core.Extensions { public static async Task BatchDeleteWithWorkAroundAsync(this IQueryable queryable, DbContext elsaContext, CancellationToken cancellationToken = default) where T : class { - if (elsaContext.Database.IsPostgres() || elsaContext.Database.IsMySql()) + if (elsaContext.Database.IsPostgres() || elsaContext.Database.IsMySql() || elsaContext.Database.IsOracle()) { // Need this workaround until https://github.com/borisdj/EFCore.BulkExtensions/issues/67 // and https://github.com/borisdj/EFCore.BulkExtensions/issues/553 is solved. + // Oracle also https://github.com/borisdj/EFCore.BulkExtensions/issues/375 var records = await queryable.ToListAsync(cancellationToken); foreach (var @record in records)