Пользовательский RoleProvider: невозможно вставить запись в таблицу UsersInRole - PullRequest
0 голосов
/ 16 мая 2009

Я реализовал LINQ to SQL на основе RoleProvider, когда я назначаю роль пользователю, следующее исключение выдается при вызове метода AddUsersToRoles. Я определил составной первичный ключ userid & roleId для этой таблицы, он по-прежнему выдает это исключение:

Невозможно выполнить создание, обновление или удаление. операции над таблицей (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();
  }
}

Любая помощь будет оценена. Спасибо.

1 Ответ

0 голосов
/ 10 апреля 2010

LINQ to SQL изначально не поддерживает многие для многих ... объединяющая таблица должна иметь два столбца внешнего ключа PLUS 1 столбец первичного ключа с атрибутом IDENTITY.

...