Membership.DeleteUser()
設法刪除我正在刪除的用戶的用戶配置文件。它爲什麼不刪除它存儲在webpages_membership
中的信息。Membership.DeleteUser不刪除用戶的所有相關行
我現在不使用角色,所以請記住您的答案。
Membership.DeleteUser()
設法刪除我正在刪除的用戶的用戶配置文件。它爲什麼不刪除它存儲在webpages_membership
中的信息。Membership.DeleteUser不刪除用戶的所有相關行
我現在不使用角色,所以請記住您的答案。
我跑了一個測試,並驗證SimpleMembershipProvider.DeleteUser不起作用的廣告。根據文檔:
這種方法刪除的會員賬戶表中的條目(默認情況下,webpages_Membership)。如果deleteAllRelatedData爲true,則存儲在用戶表中的所有用戶數據也將被刪除。
但在我的測試中,我設置deleteAllRelatedData爲真,它只是刪除了用戶配置表中的條目,使條目webpages_membership不變。無論是在文檔中的錯誤還是在執行SimpleMembership。
但我確實找到了解決辦法。首先致電SimpleMembershipProvider.DeleteAccount。這將刪除網頁會員表中的條目。然後致電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 2013-03-05 21:31:00
我在答案中添加了我的測試代碼。希望這會回答你的問題。如果它沒有在你的問題中提供代碼示例,那麼我可以提供幫助。 – 2013-03-06 14:02:37
太棒了!這工作完美。 – zms6445 2013-03-06 14:06:21