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