public void UpdateUser(MembershipUser user, string[] roles) { using (var ts = new TransactionScope()) { _provider.UpdateUser(user); var existingRoles = _roleProvider.GetRolesForUser(user.UserName); if (roles != null && roles.Length > 0) { var rolesToBeAdded = roles.Except(existingRoles).ToArray(); _roleProvider.AddUsersToRoles(new[] { user.UserName }, rolesToBeAdded); } if (existingRoles.Length > 0) { var rolesToBeDeleted = (roles != null ? existingRoles.Except(roles) : existingRoles).ToArray(); _roleProvider.RemoveUsersFromRoles(new[] { user.UserName }, rolesToBeDeleted); } ts.Complete(); } }