Search code examples
sqlmodel-view-controllersimplemembership

SimpleMembership Could not drop constraint


When executing:

ALTER TABLE [dbo].[webpages_UsersInRoles] DROP CONSTRAINT [FK_dbo.webpages_UsersInRoles_dbo.webpages_Membership_UserId]

I receive an error:

'FK_dbo.webpages_UsersInRoles_dbo.webpages_Membership_UserId' is not a constraint.
Could not drop constraint. See previous errors.

This is my webpages_UsersInRoles table:

CREATE TABLE [dbo].[webpages_UsersInRoles] (
    [UserId] INT NOT NULL,
    [RoleId] INT NOT NULL,
    PRIMARY KEY CLUSTERED ([UserId] ASC, [RoleId] ASC),
    CONSTRAINT [fk_UserId] FOREIGN KEY ([UserId]) REFERENCES [dbo].[UserProfile] ([UserId]),
    CONSTRAINT [fk_RoleId] FOREIGN KEY ([RoleId]) REFERENCES [dbo].[webpages_Roles] ([RoleId])
);

I tried doing following this answer, but it didn't work for me.


Solution

  • you can try this:

    [Authorize(Roles = "Admin")]
    [HttpPost]
    public ActionResult DeleteUser(int id)
    {
        var tmpuser = "";
        var ctx = new UsersContext();
        using (ctx)
        {
            var firstOrDefault   = ctx.UserProfiles.FirstOrDefault(us => us.UserId==id);
            if (firstOrDefault != null)
                tmpuser = firstOrDefault.UserName;
        }
    
        string[] allRoles = Roles.GetRolesForUser(tmpuser);
        Roles.RemoveUserFromRoles(tmpuser,allRoles);
    
        //Roles.RemoveUserFromRole(tmpuser, "RoleName");
    
        ((SimpleMembershipProvider)Membership.Provider).DeleteAccount(tmpuser);
        Membership.Provider.DeleteUser(tmpuser, true);
        Membership.DeleteUser(tmpuser, true);
    
        ctx = new UsersContext();
    
        return View(ctx.UserProfiles.OrderBy(user => user.UserName).ToList());
    }