似乎几乎没有任何例子,所以这里是:

这是我的三个结构,但似乎无法正确创建表,当我调用以下行时,它说ID未被识别:

IEnumerable<Permission> permissions = _data.Find<RolePermission>(x => x.Role.RoleKey == roleKey).Select(x => x.Permission);

Rolepermession:

public class RolePermission
{

    [SubSonicPrimaryKey]
    public int RolePermissionId { get; set; }

    public int RoleId { get; set; }
    public int PermissionId { get; set; }

    //Foreign Key of Role
    public Role Role { get; set; }

    //Foreign key of Permission
    public Permission Permission { get; set; }

}

允许:

public class Permission
    {

        [SubSonicPrimaryKey]
        public int Id { get; set; }
        [SubSonicLongString]

        public string PermissionKey { get; set; }
        [SubSonicLongString]
        public string PermissionDescription { get; set; }

    }

角色:

public class Role
    {

        [SubSonicPrimaryKey]
        public int Id { get; set; }

        [SubSonicLongString]
        public string RoleKey { get; set; }

        [SubSonicLongString]
        public string RoleDescription { get; set; }

    }
有帮助吗?

解决方案

我不知道当前版本中是否已解决此问题,但我记得在亚音速键检测中有一个愚蠢的错误。

  • 如果您的对象包含一个名为ID的属性,则假设是您的主要密钥。
  • 如果没有 SubSonicPrimaryKey 属性(就像您一样)。
  • 如果您有一个称为ID的属性,并且还用属性(例如您的角色和权限类)进行了装饰,则可以将亚音速索引两次找到该属性,并且不会检查它们是否同等。然后它会引发异常,因为它无法可靠地确定要服用哪个。

长话短说,您应该尝试:

a)从ID列中删除属性

b)将属性重命名为releid或许可ID(这将更加一致,因为您的Rolepermessions类具有称为Rolepermession ID的PK)

如果那无济于事,请提供堆栈。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top