我正在尝试从 IdentityUserRole 表中名为 UserRole 的列中删除索引/外键。
UserRole 有 2 列。用户 ID 和角色 ID。两者都是主键。
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
var rolesTable = modelBuilder.Entity<Role>().ToTable("Role");
var userRolesTable = modelBuilder.Entity<UserRole>().ToTable("UserRole");
var userClaimsTable = modelBuilder.Entity<IdentityUserClaim<string>>().ToTable("UserClaim");
var usersTable = modelBuilder.Entity<User>().ToTable("User");
modelBuilder.Entity<Role>(builder =>
{
builder.Metadata.RemoveIndex(new[] { builder.Property(u => u.NormalizedName).Metadata });
});
modelBuilder.Entity<UserRole>(builder =>
{
builder.Metadata.RemoveIndex(new[] { builder.Property(u => u.RoleId).Metadata});
});
}
但是,每当我运行迁移并更新数据库时,该索引仍然出现:
RoleId 列的 IX_UserRole_RoleId
编辑:这是生成的迁移
migrationBuilder.CreateTable(
name: "UserRole",
columns: table => new
{
UserId = table.Column<string>(nullable: false),
RoleId = table.Column<string>(nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_UserRole", x => new { x.UserId, x.RoleId });
table.ForeignKey(
name: "FK_UserRole_Role_RoleId",
column: x => x.RoleId,
principalTable: "Role",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
table.ForeignKey(
name: "FK_UserRole_User_UserId",
column: x => x.UserId,
principalTable: "User",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateIndex(
name: "IX_UserRole_RoleId",
table: "UserRole",
column: "RoleId");