Asp.net core 实体框架核心;身份验证、授权和保护特定项目

Asp.net core 实体框架核心;身份验证、授权和保护特定项目,asp.net-core,graphql,entity-framework-core,hotchocolate,Asp.net Core,Graphql,Entity Framework Core,Hotchocolate,我正在使用热巧克力在asp.net core中使用Graphql创建一个代码优先的EFCore应用程序,并且似乎正在创建大量重复的多对多关系,以限制对特定项目的访问,这些项目是允许个人通过api访问的 在上下文中,模式是一系列描述项目的一对多实体,因此咨询>客户>计划>项目,然后是一系列项目之间的一对多关系。各个实体描述项目本身的各个方面,即风险、收益、任务、依赖性、约束、预算、注释、文件等。。。(每个都是一个实体类型,因此是一个数据库表 我已经实现了基于令牌的身份验证来访问API,所以我已经完

我正在使用热巧克力在asp.net core中使用Graphql创建一个代码优先的EFCore应用程序,并且似乎正在创建大量重复的多对多关系,以限制对特定项目的访问,这些项目是允许个人通过api访问的

在上下文中,模式是一系列描述项目的一对多实体,因此咨询>客户>计划>项目,然后是一系列项目之间的一对多关系。各个实体描述项目本身的各个方面,即风险、收益、任务、依赖性、约束、预算、注释、文件等。。。(每个都是一个实体类型,因此是一个数据库表

我已经实现了基于令牌的身份验证来访问API,所以我已经完成了“谁可以访问应用程序”部分

我已经实施了基于角色的授权,以允许访问某些类型的资源,例如为访问管理任务或风险的模块支付了许可证。因此,我已经完成了“允许他们使用应用程序的哪些部分”部分

“我能对该任务做些什么”和“我对该任务做了些什么”的颗粒元素让我陷入困境,我知道这将是一种1:1和1:许多关系的混合,例如:

1:1关系:

  • 创建人
  • 被删除
许多:许多关系:

  • 批准人
  • 批准人
  • 评论员
  • 审查人
  • 卡内特
  • 更新人
  • 烛台
  • 坎维尤
  • 分配给可计算所有者
  • 指定的责任所有人
  • 指派的项目团队成员
就我对EF Core的理解而言,这意味着我的任务实体需要一个User类型的属性,用于CreatedBy和DeletedBy,然后是11
ICollection
集合,用于每个多对多关系

对于hte关系的互惠部分,用户实体还需要11个
ICollection
集合

我还需要11个中间表,其中包含TaskId和UserId以及Task和User的属性,以创建1:many关系,然后在
重写OnModelCreating
方法中定义键和
。HasOne
。HasMany
用户中间表和Tasks表之间的关系

总共有12种实体类型(项目项,如风险、依赖关系、约束、任务等)需要与用户建立这些形式的关系,因此这似乎有132种(12种实体类型,11个用户集合)用户表上的集合、132个中间表、132组DbSet表定义、132组OnModelCrating关系定义

有没有更好的方法?或者这真的只是大量复制、粘贴、查找和替换的情况