Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 自定义角色提供者:Can';t在UsersInRole表中插入记录_Asp.net_Linq To Sql_Exception_Roleprovider - Fatal编程技术网

Asp.net 自定义角色提供者:Can';t在UsersInRole表中插入记录

Asp.net 自定义角色提供者:Can';t在UsersInRole表中插入记录,asp.net,linq-to-sql,exception,roleprovider,Asp.net,Linq To Sql,Exception,Roleprovider,我已经实现了一个基于LINQ到SQL的RoleProvider,当我在调用AddUsersToRoles方法时抛出异常并将角色分配给用户时。我在此表上定义了一个复合主键userid&roleId,它仍然引发此异常: 无法执行创建、更新或删除 对“表(UsersInRole)”的操作 因为它没有主键 我的AddUsersToRoles方法的LinQ到SQL实现如下所示。它在db.UsersInRoles.InsertOnSubmit(userInRole)处中断 使用(RussarmsDataCo

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

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

我的
AddUsersToRoles
方法的LinQ到SQL实现如下所示。它在
db.UsersInRoles.InsertOnSubmit(userInRole)处中断

使用(RussarmsDataContext db=new RussarmsDataContext())
{
List usersInRole=new List();
foreach(用户名中的字符串用户名)
{
foreach(rolenames中的字符串rolename)
{
UsersInRole userInRole=new UsersInRole();
object userId=ProviderSutibility.GetUserIdByUserName(用户名、应用程序名);
对象roleId=ProviderSutibility.GetRoleIdByRoleName(rolename,applicationName);
if(userId!=null&&roleId!=null)
{
userInRole.UserId=(Guid)UserId;
userInRole.RoleId=(Guid)RoleId;
db.UsersInRoles.InsertOnSubmit(userInRole);
}
}
}
尝试
{
//db.UsersInRoles.InsertAllOnSubmit(usersInRole);
db.SubmitChanges();
}
捕获(ChangeConflictException)
{
db.ChangeConflicts.ResolveAll(RefreshMode.OverwriteCurrentValues);
db.SubmitChanges();
}
}
任何帮助都将不胜感激。
谢谢。

LINQ to SQL本机不支持多对多。。。联接表必须有两个外键列和一个带有
IDENTITY
属性的主键列

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