Я проверил тест и подтвердил, что SimpleMembershipProvider.DeleteUser не работает, как рекламируется. Согласно документации:
Этот метод удаляет запись в таблице членство учетной записи (по умолчанию, webpages_Membership). Если значение deleteAllRelatedData истинно, все пользовательские данные, которые хранятся в таблице пользователя, также удаляются.
Но в моем тесте я поставил deleteAllRelatedData истина, и он просто удаляется запись в таблицеUserProfile, оставив запись в webpages_membership нетронутым. Либо ошибка в документации, либо в процессе внедрения SimpleMembership.
Но я нашел работу вокруг. Первый звонок SimpleMembershipProvider.DeleteAccount. Это приведет к удалению записи в таблице webpages_membership. Затем вызовите SimpleMembershipProvider.DeleteUser, чтобы удалить запись в таблице UserProfile. Вот фрагмент кода, который я использовал для моего теста.
var roles = (SimpleRoleProvider)Roles.Provider;
var membership = (SimpleMembershipProvider)Membership.Provider;
if (!roles.RoleExists("Admin"))
{
roles.CreateRole("Admin");
}
if (membership.GetUser("test", false) == null)
{
membership.CreateUserAndAccount("test", "test");
}
//Commented this out because you will get a foreign key
//error if you try to delete the user without removing the
//the mapping of the user to a role
//if (!roles.GetRolesForUser("test").Contains("Admin"))
//{
// roles.AddUsersToRoles(new[] { "test" }, new[] { "admin" });
//}
//This will delete the user information from webpages_membership
bool wasDeleted = membership.DeleteAccount("test");
//This will delelet the user information form UserProfile
wasDeleted = membership.DeleteUser("test", true);
Как вы можете видеть из комментариев, это не будет работать, если вы используете роли и у вас есть роли, отображенные для этого пользователя. Вам нужно будет удалить их, прежде чем вы сможете удалить пользователя. Я знаю, что это не проблема для zms6445, но я хотел поместить это для людей, использующих роли.
Как получить доступ к методу DeleteAccount и DeleteUser. Я попытался обходным путем, и единственными доступными мне способами в классе SimpleMembershipProvider являются Equals и ReferenceEquals. – zms6445
Я добавил код для своего теста в ответ. Надеюсь, это ответит на ваш вопрос. Если он не предоставляет образцы кода в вашем Вопросе, я могу помочь. –
Отличная работа! Это сработало отлично. – zms6445