public async Task <IUserDetails> UpdateDetails(IUserDetails userDetails) { try { if (userDetails == null || userDetails.UserName == null) { throw new ArgumentNullException(nameof(userDetails)); } using var cnn = _createdDbConnection(); cnn.Open(); string query = $"UPDATE UserDetails SET {_getSqlUpdateFields(typeof(UserDetails))}" .Replace("UserName=@UserName,", ""); query += " WHERE UserName=@UserName"; if (await cnn.ExecuteAsync(query, userDetails.Encrypt(_encryptionKey)) != 1) { throw new Exception($"ExecuteAsync failed: {query}"); } return(userDetails); } catch (Exception ex) { _log?.WriteError(nameof(UserRepository), nameof(UpdateDetails), userDetails.UserName, null, ex); throw; } }