【问题标题】:Custom RoleProvider: Can't insert record in UsersInRole Table自定义 RoleProvider:无法在 UsersInRole 表中插入记录
【发布时间】:2009-05-16 08:00:53
【问题描述】:

我已经实现了一个基于RoleProvider 的 LINQ to SQL,当我将角色分配给用户时,在调用 AddUsersToRoles 方法时引发了异常。我在这个表上定义了一个复合主键userid & roleId,它仍然抛出这个异常:

无法执行创建、更新或删除 对“表(UsersInRole)”的操作 因为它没有主键。

我的AddUsersToRoles方法的LinQ to SQL实现如下。它在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();
  }
}

任何帮助将不胜感激。 谢谢。

【问题讨论】:

    标签: asp.net linq-to-sql exception roleprovider


    【解决方案1】:

    LINQ to SQL 本身不支持多对多...连接表必须有两个外键列加上一个具有IDENTITY 属性的主键列。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-09
      • 2018-07-24
      • 2013-03-05
      • 2017-07-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-04
      相关资源
      最近更新 更多