From a5c4a7618d79e1eff3363f6a22ecdc7ccace165e Mon Sep 17 00:00:00 2001 From: Leendert de Borst Date: Sun, 15 Dec 2024 14:53:33 +0100 Subject: [PATCH] Update AliasServerDbContext.cs so pragma settings are applied correctly (#467) --- .../AliasServerDb/AliasServerDbContext.cs | 31 ++++++++++++++++--- 1 file changed, 27 insertions(+), 4 deletions(-) diff --git a/src/Databases/AliasServerDb/AliasServerDbContext.cs b/src/Databases/AliasServerDb/AliasServerDbContext.cs index b2bc58a7a..4a7c85de5 100644 --- a/src/Databases/AliasServerDb/AliasServerDbContext.cs +++ b/src/Databases/AliasServerDb/AliasServerDbContext.cs @@ -25,6 +25,7 @@ public class AliasServerDbContext : WorkerStatusDbContext, IDataProtectionKeyCon /// public AliasServerDbContext() { + SetPragmaSettings(); } /// @@ -34,6 +35,7 @@ public class AliasServerDbContext : WorkerStatusDbContext, IDataProtectionKeyCon public AliasServerDbContext(DbContextOptions options) : base(options) { + SetPragmaSettings(); } /// @@ -254,13 +256,34 @@ public class AliasServerDbContext : WorkerStatusDbContext, IDataProtectionKeyCon // Add SQLite connection with enhanced settings var connectionString = configuration.GetConnectionString("AliasServerDbContext") + - ";Mode=ReadWriteCreate;Cache=Shared" + - ";Journal Mode=WAL" + - ";Synchronous=Normal" + - ";Busy Timeout=30000"; + ";Mode=ReadWriteCreate;Cache=Shared"; optionsBuilder .UseSqlite(connectionString, options => options.CommandTimeout(60)) .UseLazyLoadingProxies(); } + + /// + /// Sets up the PRAGMA settings for SQLite. + /// + private void SetPragmaSettings() + { + var connection = Database.GetDbConnection(); + if (connection.State != System.Data.ConnectionState.Open) + { + connection.Open(); + } + + using (var command = connection.CreateCommand()) + { + // Increase busy timeout + command.CommandText = @" + PRAGMA busy_timeout = 30000; + PRAGMA journal_mode = WAL; + PRAGMA synchronous = NORMAL; + PRAGMA temp_store = MEMORY; + PRAGMA mmap_size = 1073741824;"; + command.ExecuteNonQuery(); + } + } }