2013-03-16 21 views
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" }); 
+0

該消息表明您正在爲不在UserProfile表中的UserId添加行。 – Andomar 2013-03-16 13:22:26

+0

是的,但只有兩個用戶標識,並且這些標識在該表中。 UserId 1和2。 – Alan2 2013-03-16 19:31:25

回答

0

我遇到了這個問題,以及和它似乎是在addUserToRole被插入用戶ID進入角色ID列和角色ID爲用戶ID列,這意味着它可以找不到等於三的userId,從而給出錯誤信息。

相關問題