使用实体框架创建循环实体

时间:2018-09-18 15:04:10

标签: .net entity-framework

具有以下实体:

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)。

1 个答案:

答案 0 :(得分:0)

我解决了上述问题以更改表结构。我猜想拥有循环依赖从来没有那么好。所以我将其更改为:

Application --> Role --> RolePermission --> Permission --> Application ...

Application --> Permission --> RolePermission --> Role

将权限直接引用到应用程序的原因是,对于每个控制器方法,权限都是硬编码的(例如[Can(“ read-entity”)]。角色本身是可变的。