示例#1
0
        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;
            }
        }