public async Task UpdateConfiguration(SmtpConfiguration configuration) { PropertyInfo[] props = configuration.GetType().GetProperties(); foreach (var prop in props) { Config config = context.Configs.Where(x => x.Key == prop.Name).FirstOrDefault(); if (config == null) { config = new Config { Key = prop.Name, Value = (string)prop.GetValue(configuration) }; context.Configs.Add(config); } else { config.Value = (string)prop.GetValue(configuration); context.Configs.Update(config); } } bool connected = SmtpHelper.TestConnection(configuration.Host, int.Parse(configuration.Port)); if (!connected) { throw new FormMgrException("Smtp connection failed. Please enter a valid configuration."); } await context.SaveChangesAsync(); }