public DatabaseContext CreateContext(DatabaseSettingsPlaceholder settings) { int id = SynchronizedContexts.Count; if (SynchronizedContexts.TryAdd(id, new DatabaseContext(id, settings))) { if (SynchronizedContexts.TryGetValue(id, out var val)) { return(val); } throw new Exception($"Invalid work with concurrent cache!"); } else { if (SynchronizedContexts.ContainsKey(id)) { if (SynchronizedContexts.TryGetValue(id, out var val)) { return(val); } throw new Exception($"Invalid work with concurrent cache!"); } throw new Exception($"Unknown error with database contexts caching"); } }
public override void Update() { if (RemovableIdentifiers.Count > 0) { foreach (var id in RemovableIdentifiers) { _ = SynchronizedContexts.TryRemove(id, out _); } RemovableIdentifiers.Clear(); } UpdateStatistics(); }