0

WebSecurity標準機能を使用して、ロールの管理-管理ページを作成しています。

このエラーが発生します

対応する主キー値が存在しないため、外部キー値を挿入できません。[外部キー制約名=fk_UserId]

次のコード行:

if(!Roles.IsUserInRole(userNames[0], roleNames[0])){
       Roles.AddUsersToRoles(userNames, roleNames);
}

userId個々のテーブルは列にリンクする必要があるという私の理解。そして彼らは。開発にはWebMatrix2とRazorフレームワークを使用しています。

SQLの首謀者によるアイデアや解決策はありますか?どうもありがとう!

以下は、私がどのように取り組んでいるかのコードフラグメントです!

 @{
    var roleName = "";
    string[] userNames = new string[1];
    string[] roleNames = new string[1];

    var db = Database.Open("ResearchA");
    var selectQueryString = "SELECT UserId, username FROM [usernames]";

  if(IsPost){

    // Create new role
    if(!Request["buttonCreateRole"].IsEmpty()){
      roleName=Request["textRoleName"];

      if(!Roles.RoleExists(roleName) && !roleName.IsEmpty()){
        Roles.CreateRole(roleName);
      }
    } 

    // Delete role

    if(!Request["buttonDeleteRole"].IsEmpty()){
      roleName=Request["textRoleName"];

      if(Roles.GetUsersInRole(roleName).Length == 0 && !roleName.IsEmpty()){
        Roles.DeleteRole(roleName, true); 
      }
    } 

    // Add user to role

    if(!Request["buttonAddUserToRole"].IsEmpty()){
      userNames[0] = Request["selectUserName"];
      roleNames[0] = Request["selectRoleName"];

      if(!Roles.IsUserInRole(userNames[0], roleNames[0])){
       Roles.AddUsersToRoles(userNames, roleNames);
      }
    }

    // Delete user from role

    if(!Request["buttonDeleteUserFromRole"].IsEmpty()){
      userNames[0] = Request["selectUserName"];
      roleNames[0] = Request["selectRoleName"];

      if(Roles.IsUserInRole(userNames[0], roleNames[0])){
        Roles.RemoveUsersFromRoles(userNames, roleNames);
      }
    } 
  }
}
4

1 に答える 1

0

わかりませんが、ユーザーテーブルとロールテーブルを手動で作成しようとしているようです。

aspnet_regsql.exeを実行してみましたか?これは、「%WINDIR%\ Microsoft.NET \ Framework \v4.0.30319\」ディレクトリにあります。ウィザードが開き、同じ「%WINDIR%\ Microsoft.NET \ Framework \v4.0.30319\」ディレクトリにSQLスクリプトを使用して適切なテーブルを作成します。

于 2013-02-13T18:36:36.227 に答える