0
我有以下代碼:我怎樣才能在一個批處理多個用戶添加到角色與SQL Server的LocalDB
WebSecurity.CreateUserAndAccount("r12345678", "abcdefgh", false);
WebSecurity.CreateUserAndAccount("m12345678", "abcdefgh", false);
System.Web.Security.Roles.CreateRole("Author");
System.Web.Security.Roles.CreateRole("Admin");
System.Web.Security.Roles.CreateRole("Super");
System.Web.Security.Roles.AddUserToRole("r12345678", "Author");
System.Web.Security.Roles.AddUserToRole("r12345678", "Admin");
System.Web.Security.Roles.AddUserToRole("r12345678", "Super");
System.Web.Security.Roles.AddUserToRole("m12345678", "Author");
System.Web.Security.Roles.AddUserToRole("m12345678", "Admin");
第5行的工作很好,但是當它涉及到這一行:
System.Web.Security.Roles.AddUserToRole("r12345678", "Super");
我得到如下:
The INSERT statement conflicted with the FOREIGN KEY constraint "webpages_Roles_UserProfiles_Target". The conflict occurred in database "T12345", table "dbo.UserProfile", column 'UserId'.
The statement has been terminated.
我不明白這是爲什麼。我有一個100%新鮮的數據庫。事實上,我刪除了數據庫並重新創建。這是我的SQL定義:
CREATE TABLE [dbo].[webpages_UsersInRoles] (
[RoleId] INT NOT NULL,
[UserId] INT NOT NULL,
PRIMARY KEY CLUSTERED ([RoleId] ASC, [UserId] ASC),
CONSTRAINT [webpages_Roles_UserProfiles_Source] FOREIGN KEY ([RoleId]) REFERENCES [dbo].[webpages_Roles] ([RoleId]) ON DELETE CASCADE,
CONSTRAINT [webpages_Roles_UserProfiles_Target] FOREIGN KEY ([UserId]) REFERENCES [dbo].[UserProfile] ([UserId]) ON DELETE CASCADE
);
我的用戶配置表包括:
UserId UserName
1 r12345678
2 m12345678
我UsersInRoles表包含:
RoleId UserId
1 1
1 2
我的角色表包含:
1 Author
2 Admin
3 Super
有誰有一個想法爲什麼F的外國人主要約束是越來越觸發
更新:
注意,我嘗試以下,這也不能工作。它給了一個類似的錯誤:
Roles.AddUsersToRoles(new[] {"r12345678"}, new[] {"Author","Admin","Super"});
Roles.AddUsersToRoles(new[] {"m12345678" }, new[] { "Author", "Admin", "Super" });
該消息表明您正在爲不在UserProfile表中的UserId添加行。 – Andomar 2013-03-16 13:22:26
是的,但只有兩個用戶標識,並且這些標識在該表中。 UserId 1和2。 – Alan2 2013-03-16 19:31:25