Identity 3.0 - 如何在分层应用程序中使用 AspNetUsers ID 作为外键

Identity 3.0 - How to use AspNetUsers ID as Foreign Key in a Tiered Application

意向:

一个 Subscriptions 数据库 table 包含一个 UserId 列,它与 Id AspNetUsers 的列 table。

项目设置(按其参考层次的顺序):

项目是 Code-First 配置。

数据库设置:

ApplicationDbContext 和 EFDbContext 引用相同的数据库

问题:

鉴于我的 EFDbContext 位于我的数据层中,它不包含对 Identity 3.0 的任何引用,是否可以在 AspNetUsers 和订阅之间创建外键约束?

Is it possible to create a Foreign Key constraint between AspNetUsers and Subscriptions?

当然是。当你像那样跨越边界时,你会 运行 成为常事。

而不是让 EF 创建您需要的关系

  • 创建一个新的空迁移
  • 在up方法中添加定义外键的代码
  • 在down方法中添加撤销外键的代码
  • 运行数据库迁移

迁移看起来像:

    protected override void Up(MigrationBuilder migrationBuilder)
    {
        migrationBuilder.AddForeignKey(
            name: "FK_Table_PrincipalTable_TableId",
            table: "Table",
            column: "PrincipalTableId",
            principalTable: "PrincipalTable",
            principalColumn: "Id",
            onDelete: ReferentialAction.Cascade)
    }

    protected override void Down(MigrationBuilder migrationBuilder)
    {
        migrationBuilder.DropForeignKey(
            name: "FK_Table_PrincipalTable_TableId",
            table: "Table");
    }