具有以下实体:
public class Application{
public int Id {get; set;}
[ForeignKey("applicationId")]
public virtual ICollection<Role> Roles {get; set;}
}
public class Role{
public int Id {get; set;}
public int applicationId {get; set;}
[ForeignKey("RoleId")]
public virtual ICollection<Permissions> Permissions {get; set;}
}
public class Permission{
public int Id {get; set;}
public int RoleId {get; set;}
public int applicationId {get; set;}
[ForeignKey("applicationId")]
public virtual Application application {get; set;}
}
如您所见,Permission
实体还引用了Application实体,因此我目前有循环引用。
有没有办法创建分别包含所有引用的完整数据集,如何使用实体框架保存该实体?
在我的控制器中,我得到一个Application Object作为参数,包括所有子项(不包括Permission实体的applicationId)。
答案 0 :(得分:0)
我解决了上述问题以更改表结构。我猜想拥有循环依赖从来没有那么好。所以我将其更改为:
Application --> Role --> RolePermission --> Permission --> Application ...
到
Application --> Permission --> RolePermission --> Role
将权限直接引用到应用程序的原因是,对于每个控制器方法,权限都是硬编码的(例如[Can(“ read-entity”)]。角色本身是可变的。