C# Identity 3.0-如何在分层应用程序中将AspNetUsers ID用作外键
意图: 一个订阅数据库表,其中包含一个UserId列,该列与AspNetUsers表的Id列具有外键关系 按参考层次结构的顺序设置项目: Web层包含ApplicationDbContext和ApplicationUser类 DTO层 数据访问层包含EFDbContext 项目是代码优先配置 数据库设置: ApplicationDbContext和EFDbContext都引用同一个数据库 ApplicationDbContext:引用所有标识实体 EFDbContext:引用我的订阅实体和其他实体 问题: 鉴于我的EFDbContext位于我的数据层中,其中不包含对Identity 3.0的任何引用,是否可以在AspNetUsers和订阅之间创建外键约束 是否可以在AspNetUsers和订阅之间创建外键约束 当然是。当你像那样跨越边界时,这是一件很常见的事情 而不是让EF创建您需要的关系 创建新的空迁移 添加代码以定义up方法的外键 添加代码以在down方法中撤消外键 在数据库上运行迁移 迁移将类似于:C# Identity 3.0-如何在分层应用程序中将AspNetUsers ID用作外键,c#,asp.net-core,asp.net-identity,C#,Asp.net Core,Asp.net Identity,意图: 一个订阅数据库表,其中包含一个UserId列,该列与AspNetUsers表的Id列具有外键关系 按参考层次结构的顺序设置项目: Web层包含ApplicationDbContext和ApplicationUser类 DTO层 数据访问层包含EFDbContext 项目是代码优先配置 数据库设置: ApplicationDbContext和EFDbContext都引用同一个数据库 ApplicationDbContext:引用所有标识实体 EFDbContext:引用我的订阅实体和其他实
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");
}
太好了,我从来没有想过直接在迁移中添加FK。一直依赖EF。这很有魅力,我给这个问题添加了我的答案。谢谢