0

メソッドの呼び出しRoleProvider中に例外がスローされた後、ロールをユーザーに割り当てると、LINQ to SQL ベースを実装しました。AddUsersToRolesこのテーブルで複合主キーを定義しましたがuseridroleIdそれでもこの例外がスローされます。

主キーがないため、'Table(UsersInRole)' で作成、更新、または削除操作を実行できません。

メソッドの私のLinQ to SQL実装は次のAddUsersToRolesとおりです。で壊れますdb.UsersInRoles.InsertOnSubmit(userInRole);

using (RussarmsDataContext db = new RussarmsDataContext())
{
  List<UsersInRole> usersInRole = new List<UsersInRole>();
  foreach (string username in usernames)
  {
    foreach (string rolename in rolenames)
    {
      UsersInRole userInRole = new UsersInRole();
      object userId = ProvidersUtility.GetUserIdByUserName(username,applicationName);
      object roleId = ProvidersUtility.GetRoleIdByRoleName(rolename,applicationName);
      if (userId != null && roleId != null)
      {
        userInRole.UserId = (Guid)userId;
        userInRole.RoleId = (Guid)roleId;
        db.UsersInRoles.InsertOnSubmit(userInRole);
      }
    }
  }
  try
  {
    //  db.UsersInRoles.InsertAllOnSubmit(usersInRole);
    db.SubmitChanges();
  }
  catch (ChangeConflictException)
  {
    db.ChangeConflicts.ResolveAll(RefreshMode.OverwriteCurrentValues);
    db.SubmitChanges();
  }
}

どんな助けでも大歓迎です。ありがとう。

4

1 に答える 1

0

LINQ to SQL は多対多をネイティブにサポートしていません...結合テーブルには、2 つの外部キー列と、IDENTITY属性を持つ 1 つの主キー列が必要です。

于 2010-04-10T03:32:22.540 に答える