似乎几乎没有任何例子,所以这里有:
以下是我的三个结构,但它似乎没有正确创建表格,当我调用以下行时,它表示Id无法识别:
IEnumerable<Permission> permissions = _data.Find<RolePermission>(x => x.Role.RoleKey == roleKey).Select(x => x.Permission);
RolePermission:
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; }
}
答案 0 :(得分:1)
我不知道这是否已在当前版本中修复,但我记得亚音速主键检测中存在一个愚蠢的错误。
SubSonicPrimaryKey
属性的属性(就像你所做的那样)来告诉亚力量是你的PK。长话短说,你应该试试:
a)从您的Id列中删除属性
b)将该属性重命名为RoleId或PermissionId(由于您的RolePermission类具有名为RolePermissionId的PK,因此会更加有意义)
如果这没有帮助,请提供堆栈跟踪。