public async Task <bool> Insert(Core.Models.Setting configuration)
        {
            if (configuration == null)
            {
                return(false);
            }

            using (var transaction = await _context.Database.BeginTransactionAsync().ConfigureAwait(false))
            {
                try
                {
                    _context.Settings.Add(new Models.Setting
                    {
                        Key   = configuration.Key,
                        Value = configuration.Value
                    });
                    await _context.SaveChangesAsync().ConfigureAwait(false);

                    transaction.Commit();
                    return(true);
                }
                catch (Exception ex)
                {
                    _configurationEventSource.Failure(ex);
                    transaction.Rollback();
                    return(false);
                }
            }
        }
        public async Task <bool> Update(Core.Models.Setting conf)
        {
            if (conf == null || string.IsNullOrWhiteSpace(conf.Key))
            {
                return(false);
            }

            using (var transaction = await _idServerConfigurationDbContext.Database.BeginTransactionAsync().ConfigureAwait(false))
            {
                using (var secondTransaction = await _context.Database.BeginTransactionAsync().ConfigureAwait(false))
                {
                    try
                    {
                        var configuration = await _idServerConfigurationDbContext.Settings.FirstOrDefaultAsync(c => c.Key == conf.Key).ConfigureAwait(false);

                        configuration.Value = conf.Value;
                        int lifeTime;
                        if ((conf.Key == Core.Constants.SettingNames.ExpirationTimeName ||
                             conf.Key == Core.Constants.SettingNames.AuthorizationCodeExpirationTimeName) &&
                            int.TryParse(conf.Value, out lifeTime))
                        {
                            var clients = _context.Clients;
                            foreach (var client in clients)
                            {
                                if (conf.Key == Core.Constants.SettingNames.ExpirationTimeName)
                                {
                                    client.AccessTokenLifetime = lifeTime;
                                }
                                if (conf.Key == Core.Constants.SettingNames.AuthorizationCodeExpirationTimeName)
                                {
                                    client.AuthorizationCodeLifetime = lifeTime;
                                }
                            }
                        }

                        await _idServerConfigurationDbContext.SaveChangesAsync().ConfigureAwait(false);

                        await _context.SaveChangesAsync().ConfigureAwait(false);;
                        transaction.Commit();
                        secondTransaction.Commit();
                        return(true);
                    }
                    catch (Exception ex)
                    {
                        _configurationEventSource.Failure(ex);
                        transaction.Rollback();
                        secondTransaction.Rollback();
                        return(false);
                    }
                }
            }
        }