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
This commit is contained in:
@@ -36,19 +36,14 @@ public class UmbracoDbContext : DbContext
|
||||
/// </summary>
|
||||
/// <param name="options"></param>
|
||||
public UmbracoDbContext(DbContextOptions<UmbracoDbContext> options)
|
||||
: base(ConfigureOptions(options, out IOptionsMonitor<ConnectionStrings>? connectionStringsOptionsMonitor))
|
||||
: base(ConfigureOptions(options))
|
||||
{
|
||||
connectionStringsOptionsMonitor.OnChange(c =>
|
||||
{
|
||||
ILogger<UmbracoDbContext> logger = StaticServiceProvider.Instance.GetRequiredService<ILogger<UmbracoDbContext>>();
|
||||
logger.LogWarning("Connection string changed, disposing context");
|
||||
Dispose();
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
private static DbContextOptions<UmbracoDbContext> ConfigureOptions(DbContextOptions<UmbracoDbContext> options, out IOptionsMonitor<ConnectionStrings> connectionStringsOptionsMonitor)
|
||||
private static DbContextOptions<UmbracoDbContext> ConfigureOptions(DbContextOptions<UmbracoDbContext> options)
|
||||
{
|
||||
connectionStringsOptionsMonitor = StaticServiceProvider.Instance.GetRequiredService<IOptionsMonitor<ConnectionStrings>>();
|
||||
IOptionsMonitor<ConnectionStrings> connectionStringsOptionsMonitor = StaticServiceProvider.Instance.GetRequiredService<IOptionsMonitor<ConnectionStrings>>();
|
||||
|
||||
ConnectionStrings connectionStrings = connectionStringsOptionsMonitor.CurrentValue;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user