From 9c96d65826e4a49559d98803a219a9e235cefb8a Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Sun, 25 May 2025 14:35:14 +0000
Subject: [PATCH 1/2] Initial plan for issue
From 0b76745c801b3e35883c40d1c5f1b6289f95b8cd Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Sun, 25 May 2025 14:45:11 +0000
Subject: [PATCH 2/2] Fixed SQLite dependency in PersistenceFeatureBase
Co-authored-by: sfmskywalker <938393+sfmskywalker@users.noreply.github.com>
---
.../DbContextOptionsBuilderExtensions.cs | 2 +-
.../Elsa.Persistence.EFCore.Sqlite/SetupForSqlite.cs | 11 +++++++++++
.../SqliteProvidersExtensions.cs | 4 +++-
3 files changed, 15 insertions(+), 2 deletions(-)
diff --git a/src/persistence/Elsa.Persistence.EFCore.Sqlite/DbContextOptionsBuilderExtensions.cs b/src/persistence/Elsa.Persistence.EFCore.Sqlite/DbContextOptionsBuilderExtensions.cs
index 014a552e..0d27e0c9 100644
--- a/src/persistence/Elsa.Persistence.EFCore.Sqlite/DbContextOptionsBuilderExtensions.cs
+++ b/src/persistence/Elsa.Persistence.EFCore.Sqlite/DbContextOptionsBuilderExtensions.cs
@@ -1,4 +1,4 @@
-using System.Reflection;
+using System.Reflection;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
diff --git a/src/persistence/Elsa.Persistence.EFCore.Sqlite/SetupForSqlite.cs b/src/persistence/Elsa.Persistence.EFCore.Sqlite/SetupForSqlite.cs
index e115fb57..2a6a3dd9 100644
--- a/src/persistence/Elsa.Persistence.EFCore.Sqlite/SetupForSqlite.cs
+++ b/src/persistence/Elsa.Persistence.EFCore.Sqlite/SetupForSqlite.cs
@@ -1,6 +1,7 @@
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
+using Microsoft.Extensions.DependencyInjection;
namespace Elsa.Persistence.EFCore.Sqlite;
@@ -12,6 +13,7 @@ public class SetupForSqlite : IEntityModelCreatingHandler
///
public void Handle(ElsaDbContextBase dbContext, ModelBuilder modelBuilder, IMutableEntityType entityType)
{
+ // First check if this is a SQLite database - if not, don't do anything
if(!dbContext.Database.IsSqlite())
return;
@@ -27,4 +29,13 @@ public void Handle(ElsaDbContextBase dbContext, ModelBuilder modelBuilder, IMuta
.HasConversion(new DateTimeOffsetToStringConverter());
}
}
+
+ ///
+ /// Registers the handler with the service collection if it's not already registered.
+ ///
+ public static IServiceCollection AddSetupForSqliteHandler(IServiceCollection services)
+ {
+ services.AddScoped();
+ return services;
+ }
}
\ No newline at end of file
diff --git a/src/persistence/Elsa.Persistence.EFCore.Sqlite/SqliteProvidersExtensions.cs b/src/persistence/Elsa.Persistence.EFCore.Sqlite/SqliteProvidersExtensions.cs
index 5d6d1334..ba26797a 100644
--- a/src/persistence/Elsa.Persistence.EFCore.Sqlite/SqliteProvidersExtensions.cs
+++ b/src/persistence/Elsa.Persistence.EFCore.Sqlite/SqliteProvidersExtensions.cs
@@ -68,8 +68,10 @@ public static TFeature UseSqlite(this PersistenceFeatureBa
where TDbContext : ElsaDbContextBase
where TFeature : PersistenceFeatureBase
{
+ // Setup SQLite-specific handler for Entity Framework Core limitations
+ SetupForSqlite.AddSetupForSqliteHandler(feature.Module.Services);
- feature.Module.Services.TryAddScopedImplementation();
+ // Configure the DbContextOptions to use SQLite
feature.DbContextOptionsBuilder = (sp, db) => db.UseElsaSqlite(migrationsAssembly, connectionStringFunc(sp), options, configure: configure);
return (TFeature)feature;
}