【问题标题】:How to add foregin key to aspnetroles table in EF Core code first approach?如何在 EF Core 代码优先方法中将外键添加到 aspnetroles 表?
【发布时间】:2019-08-26 16:40:54
【问题描述】:

我在 ASP.NET Core 中创建了一个带有身份验证的示例应用程序。 已创建的表很少,应用运行良好。

现在我需要创建新表“组织”。该表应通过外键以一对多的关系与默认表“AspNetRoles”连接。 每个角色可能有许多关联的组织。 问题是,我在我的应用程序中找不到这些默认表,也不知道如何使用代码优先方法创建外键。 我尝试过这样的事情:

public class Organization
{
   public int OrganizationId {get; set;}

   [ForeginKey="AspNetRoles"]
   public int RoleId {get; set;}

}

帮助。

【问题讨论】:

    标签: c# asp.net entity-framework asp.net-core ef-code-first


    【解决方案1】:

    我终于找到了实现这一目标的方法。

    public virtual string RoleId { get; set; }
    
    [ForeignKey("RoleId")]
    public virtual IdentityRole Roles { get;set; }
    

    AspNetRoles 称为 IdentityRole。

    【讨论】:

    • 嗨 @justme 从 IdentityRole 表到包含 IdentityRole 作为外部表的表会有一对多的关系,你能告诉你你是如何实现的吗?
    【解决方案2】:

    当您拥有相关实体的导航属性时,只需将相关键命名为与导航属性相同的名称,后跟 Id 或 ID,EF 将自动将其识别为相关实体的外键(例如 Role - RoleId)。

    public string RoleId { get; set; }
    public IdentityRole Role { get; set; }
    

    你可以阅读更多关于naming conventions in EF Code First here

    另外还有一个不错的tutorial on complex data models

    【讨论】:

      猜你喜欢
      • 2018-02-13
      • 2018-05-31
      • 2023-01-30
      • 1970-01-01
      • 2022-01-01
      • 2019-10-23
      • 2018-10-28
      • 1970-01-01
      相关资源
      最近更新 更多