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;
}