无法在webpages_Roles上向SimpleMembership外键错误添加角色

时间:2014-01-05 19:00:08

标签: c# asp.net asp.net-mvc entity-framework asp.net-mvc-4

  

INSERT语句与FOREIGN KEY约束“fk_RoleId”冲突。冲突发生在数据库“mydb”,表“dbo.webpages_Roles”,列“RoleId”。

我不确定是什么导致了这个问题,我已经转到dbo.webpages_UsersInRoles并删除了FK约束,但仍然归结为此错误。不知道该怎么做。

WebSecurity.CreateUserAndAccount(model.RegistrationInfo.UserName, model.RegistrationInfo.Password);

Roles.AddUserToRole(model.RegistrationInfo.UserName, level); //both strings

以正确的方式添加它们,但数据库不会接受这些条目。这是db模式。

CREATE TABLE [dbo].[webpages_Roles] (
    [RoleId]   INT            IDENTITY (1, 1) NOT NULL,
    [RoleName] NVARCHAR (256) NOT NULL,
    PRIMARY KEY NONCLUSTERED ([RoleId] ASC),
    UNIQUE NONCLUSTERED ([RoleName] ASC)
);

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

我只能手动输入整数作为roleid和userid对。

我在其他人的帖子上看过这个问题,但没有找到解决方案。

2 个答案:

答案 0 :(得分:1)

在webpages_UsersInRoles表中交换UserId和RoleId的顺序。 UserId应该是第一列。

答案 1 :(得分:0)

确保您已在数据库中拥有该角色。我认为在您的数据库中,webpages_roles表中不存在该角色。这就是发生这个问题的原因。

if (!Roles.RoleExists(newRoleName)) {
    Roles.CreateRole(newRoleName) 
};

您应该在分配角色之前执行此操作。