我在这里错过了一个概念。我假设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 - 是的,请参阅上面的修改。 –