public override void UpdateUser (MembershipUser user)
{
if (user == null)
throw new ArgumentNullException ("user");
if (user.UserName == null)
throw new ArgumentNullException ("user.UserName");
if (RequiresUniqueEmail && user.Email == null)
throw new ArgumentNullException ("user.Email");
CheckParam ("user.UserName", user.UserName, 256);
if (user.Email.Length > 256 || (RequiresUniqueEmail && user.Email.Length == 0))
throw new ArgumentException ("invalid format for user.Email");
using (DbConnection connection = CreateConnection ()) {
int returnValue = 0;
DbCommand command = factory.CreateCommand ();
command.Connection = connection;
command.CommandText = @"aspnet_Membership_UpdateUser";
command.CommandType = CommandType.StoredProcedure;
AddParameter (command, "@ApplicationName", ApplicationName);
AddParameter (command, "@UserName", user.UserName);
AddParameter (command, "@Email", user.Email == null ? (object) DBNull.Value : (object) user.Email);
AddParameter (command, "@Comment", user.Comment == null ? (object) DBNull.Value : (object) user.Comment);
AddParameter (command, "@IsApproved", user.IsApproved);
AddParameter (command, "@LastLoginDate", DateTime.UtcNow);
AddParameter (command, "@LastActivityDate", DateTime.UtcNow);
AddParameter (command, "@UniqueEmail", RequiresUniqueEmail);
AddParameter (command, "@CurrentTimeUtc", DateTime.UtcNow);
DbParameter retValue = AddParameter (command, "@ReturnVal", ParameterDirection.ReturnValue, DbType.Int32, null);
command.ExecuteNonQuery ();
returnValue = GetReturnValue (retValue);
if (returnValue == 1)
throw new ProviderException ("The UserName property of user was not found in the database.");
if (returnValue == 7)
throw new ProviderException ("The Email property of user was equal to an existing e-mail address in the database and RequiresUniqueEmail is set to true.");
if (returnValue != 0)
throw new ProviderException ("Failed to update user");
}
}