From 5146f05625d53d11c64f75459b7003ce11bcb078 Mon Sep 17 00:00:00 2001 From: Bjarke Berg Date: Wed, 31 Jan 2024 15:09:12 +0100 Subject: [PATCH] Do not dispose EF Core contexts manually (#15649) * Attempt to fix #15090. Save connection string in private variable after setup. * Do not dispose ef core contexts when if the connectionstring changes. A Ef core context is protected from creations when no connection string is present. If it changes that single instance will continue with the connection string it was initialized with. * Clean up * Review Equals methods --- .../UmbracoDbContext.cs | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/src/Umbraco.Cms.Persistence.EFCore/UmbracoDbContext.cs b/src/Umbraco.Cms.Persistence.EFCore/UmbracoDbContext.cs index 3df757ee15..419ecd6a28 100644 --- a/src/Umbraco.Cms.Persistence.EFCore/UmbracoDbContext.cs +++ b/src/Umbraco.Cms.Persistence.EFCore/UmbracoDbContext.cs @@ -36,19 +36,14 @@ public class UmbracoDbContext : DbContext /// /// public UmbracoDbContext(DbContextOptions options) - : base(ConfigureOptions(options, out IOptionsMonitor? connectionStringsOptionsMonitor)) + : base(ConfigureOptions(options)) { - connectionStringsOptionsMonitor.OnChange(c => - { - ILogger logger = StaticServiceProvider.Instance.GetRequiredService>(); - logger.LogWarning("Connection string changed, disposing context"); - Dispose(); - }); + } - private static DbContextOptions ConfigureOptions(DbContextOptions options, out IOptionsMonitor connectionStringsOptionsMonitor) + private static DbContextOptions ConfigureOptions(DbContextOptions options) { - connectionStringsOptionsMonitor = StaticServiceProvider.Instance.GetRequiredService>(); + IOptionsMonitor connectionStringsOptionsMonitor = StaticServiceProvider.Instance.GetRequiredService>(); ConnectionStrings connectionStrings = connectionStringsOptionsMonitor.CurrentValue;