1

我有 3 张桌子

Roles
------
RoleId(PK)
RoleName
RoleDescription

CustomPermissions
-----------------
PermissionId(PK)
PermissionName
PermissionDescription

RolePermissionMappings
------------------------
RoleId (PK)
PermissionId(PK)
Role_RoleId(FK)
CustomPermission_PermissionId(FK)

我可以单独向 Roles 和 CustomPermissions 表添加值。当我试图映射 RolePermissionMappings 表中的值时,我收到了这个错误。

Entities in 'RolePermissionMappingContainer.RolePermissionMappings' 
participate in the 'RoleRolePermissionMapping' relationship. 0 related 'Role' were found. 1 'Role' is expected.

角色有 n 个权限,它们必须像这样在 RolePermissionMappings 表中映射

RoleId   PermissionId
------   ------------
  2          2
  2          4
  2          5
  2          8
  2          10

我的代码在这里

bool ICustomPermissions.AddPermissionsToRole(RoleDataContract role, List<PermissionDataContract> permissions)
{
    using(_context = new RolePermissionMappingContainer())
    {
        RolePermissionMapping rpm = new RolePermissionMapping();
        {
            rpm.RoleId =  role.RoleId;

            foreach (PermissionDataContract pdc in permissions)
            {
                rpm.PermissionId =  pdc.PermissionId;
                //_context.RolePermissionMappings.AddObject(rpm);
                _context.RolePermissionMappings.AddObject(rpm);
                _context.SaveChanges();
            }
        }
    }
    return true;
}

请纠正我在哪里遇到错误。

4

1 回答 1

0

RolePermissionMapping为每个PermissionDataContractin创建一个新实例permissions

bool ICustomPermissions.AddPermissionsToRole(RoleDataContract role, List<PermissionDataContract> permissions)
    {
       using(_context = new RolePermissionMappingContainer())
       {

               foreach (PermissionDataContract pdc in permissions)
               {

                   RolePermissionMapping rpm = new RolePermissionMapping()
                   {
                       RoleId = role.RoleId,
                       PermissoinId = pdc.PermissionId
                   }

                   _context.RolePermissionMappings.AddObject(rpm);
                   _context.SaveChanges();
               }
       }
       return true;
    }
于 2013-10-17T08:55:45.133 回答