2013-03-03 82 views
0

当执行:SimpleMembership无法删除约束

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

我收到一个错误:

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

这是我webpages_UsersInRoles表:

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]) 
); 

我试着做下面这个answer,但它并没有为我工作。

+1

的错误似乎相当自我解释。 '[FK_dbo.webpages_UsersInRoles_dbo.webpages_Membership_UserId]'是不是一个约束,在表中的两个限制是'fk_UserUd'和'fk_RoleId'。你想要放弃什么约束? – GarethD 2013-03-03 17:49:02

+0

林试图重新与此 的UsersInRoles [表( “webpages_UsersInRoles”)] 公共类UsersInRole { [密钥,列(订单= 0)] 公众诠释角色ID {得到;组; } [密钥,列(订单= 1)] 公众诠释用户ID {得到;组; } [柱( “角色ID”),InverseProperty( “UsersInRoles”)] 公众角色角色{得到;组; } [柱( “用户ID”),InverseProperty( “UsersInRoles”)] 公众成员成员{得到;组; }} 我应该已经运行,但它不会因为约束。 – Bormeth 2013-03-04 07:42:27

回答

0

你可以试试这个:

[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()); 
}