代码之家  ›  专栏  ›  技术社区  ›  SNO

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

  •  0
  • SNO  · 技术社区  · 7 年前

    具有下列实体:

    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 实体还引用回应用程序实体,因此我当前有循环引用。

    是否有任何方法可以创建一个完整的数据集,其中分别包含所有引用?如何使用实体框架保存该实体?

    在我的控制器中,我得到一个应用程序对象作为参数,包括所有子对象(不包括权限实体的applicationId)。

    1 回复  |  直到 7 年前
        1
  •  0
  •   SNO    7 年前

    我解决了上面提到的问题来更改表结构。我想有循环依赖性从来没有那么好。所以我把它从:

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

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

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