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对。
我在其他人的帖子上看过这个问题,但没有找到解决方案。
答案 0 :(得分:1)
在webpages_UsersInRoles表中交换UserId和RoleId的顺序。 UserId应该是第一列。
答案 1 :(得分:0)
确保您已在数据库中拥有该角色。我认为在您的数据库中,webpages_roles表中不存在该角色。这就是发生这个问题的原因。
if (!Roles.RoleExists(newRoleName)) {
Roles.CreateRole(newRoleName)
};
您应该在分配角色之前执行此操作。