我在這裏錯過了一個概念。我假設Membership.DeleteUser()
會從我的會員表中清除用戶。我的代碼:Membership.DeleteUser()與RI約束失敗
// remove all but 'admin' from Membership
MembershipUserCollection users = Membership.GetAllUsers();
foreach (MembershipUser user in users)
{
if (user.UserName != "admin")
{
Membership.DeleteUser(user.UserName);
}
}
DeleteUser()
失敗例外:
The DELETE statement conflicted with the REFERENCE constraint
"FK__aspnet_Me__UserI__58D1301D". The conflict occurred in database
"MyDatabase", table "dbo.aspnet_Membership", column 'UserId'.
The statement has been terminated.
在我的web.config:
<membership defaultProvider="MyMembershipProvider">
<providers>
<clear/>
<add name="MyMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="MembershipConnectionString" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="5" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="MyApplication"/>
</providers>
</membership>
我得到它是有Membership.UserId -> Users.UserId
之間的外鍵關係,但會假定DeleteUser()
的全部要點是刪除該用戶在Membership
,中的所有記錄和UsersInRoles
表格等等。
當然,我可以直接進入Membership
表並刪除相應的記錄,但這是違背了使用API的目的。我究竟做錯了什麼?從Membership表中刪除用戶的正確方法是什麼?
您使用的是默認的SqlMembershipProvider嗎? –
@MystereMan - 是的,請參閱上面的修改。 –