0

私は次のコードを持っています:

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

私のUserProfileテーブルには次のものが含まれています。

UserId  UserName
1   r12345678
2   m12345678

My UsersInRolesテーブルに含まれるもの:

RoleId  UserId
1       1
1       2

私の役割テーブルには次のものが含まれます。

1   Author
2   Admin
3   Super

外部キー制約がトリガーされる理由を誰かが知っていますか

アップデート:

次のことを試しましたが、これも機能しなかったことに注意してください。同様のエラーが発生しました:

Roles.AddUsersToRoles(new[] {"r12345678"}, new[] {"Author","Admin","Super"});
Roles.AddUsersToRoles(new[] {"m12345678" }, new[] { "Author", "Admin", "Super" });
4

1 に答える 1

0

私もこの問題に遭遇しましたが、addUserToRole が userID を roleID 列に挿入し、Role ID を UserID 列に挿入しているようです。つまり、3 に等しい userId が見つからないため、エラー メッセージが表示されます。 .

于 2013-04-16T13:04:34.457 に答える