Перемещение Таблиц Идентификаторов В Пользовательскую Схему Asp.Net Сердечник

#entity-framework #asp.net-core #asp.net-identity #ef-core-5.0

Вопрос:

Я пытаюсь переместить все мои таблицы идентификаторов в схему «Пользователь», используя следующий код в моем контексте. он отлично работает для всех, кроме «AspNetUserClaims», «AspNetRoleClaims». Что мне делать?

        protected override void OnModelCreating(ModelBuilder builder)
       {
           base.OnModelCreating(builder);

           builder.Entity<IdentityRole>().ToTable("AspNetRoles", schema: "User");
           builder.Entity<IdentityRoleClaim<int>>().ToTable("AspNetRoleClaims", schema: "User");
           builder.Entity<ApplicationUser>().ToTable("AspNetUsers", schema: "User");
           builder.Entity<IdentityUserClaim<int>>().ToTable("AspNetUserClaims", schema: "User");
           builder.Entity<IdentityUserLogin<string>>().ToTable("AspNetUserLogins", schema: "User");
           builder.Entity<IdentityUserRole<string>>().ToTable("AspNetUserRoles", schema: "User");
           builder.Entity<IdentityUserToken<string>>().ToTable("AspNetUserTokens", schema: "User");

       }
 

Миграция, относящаяся к строкам выше :

 using Microsoft.EntityFrameworkCore.Migrations;

namespace MG.Data.Migrations
{
    public partial class Mig2 : Migration
    {
        protected override void Up(MigrationBuilder migrationBuilder)
        {
            migrationBuilder.RenameTable(
                name: "AspNetUserTokens",
                newName: "AspNetUserTokens",
                newSchema: "User");

            migrationBuilder.RenameTable(
                name: "AspNetUsers",
                newName: "AspNetUsers",
                newSchema: "User");

            migrationBuilder.RenameTable(
                name: "AspNetUserRoles",
                newName: "AspNetUserRoles",
                newSchema: "User");

            migrationBuilder.RenameTable(
                name: "AspNetUserLogins",
                newName: "AspNetUserLogins",
                newSchema: "User");

            migrationBuilder.RenameTable(
                name: "AspNetRoles",
                newName: "AspNetRoles",
                newSchema: "User");

            migrationBuilder.CreateTable(
                name: "AspNetRoleClaims",
                schema: "User",
                columns: table => new
                {
                    Id = table.Column<int>(type: "int", nullable: false)
                        .Annotation("SqlServer:Identity", "1, 1"),
                    RoleId = table.Column<int>(type: "int", nullable: false),
                    ClaimType = table.Column<string>(type: "nvarchar(max)", nullable: true),
                    ClaimValue = table.Column<string>(type: "nvarchar(max)", nullable: true)
                },
                constraints: table =>
                {
                    table.PrimaryKey("PK_AspNetRoleClaims", x => x.Id);
                });

            migrationBuilder.CreateTable(
                name: "AspNetUserClaims",
                schema: "User",
                columns: table => new
                {
                    Id = table.Column<int>(type: "int", nullable: false)
                        .Annotation("SqlServer:Identity", "1, 1"),
                    UserId = table.Column<int>(type: "int", nullable: false),
                    ClaimType = table.Column<string>(type: "nvarchar(max)", nullable: true),
                    ClaimValue = table.Column<string>(type: "nvarchar(max)", nullable: true)
                },
                constraints: table =>
                {
                    table.PrimaryKey("PK_AspNetUserClaims", x => x.Id);
                });
        }

        protected override void Down(MigrationBuilder migrationBuilder)
        {
            migrationBuilder.DropTable(
                name: "AspNetRoleClaims",
                schema: "User");

            migrationBuilder.DropTable(
                name: "AspNetUserClaims",
                schema: "User");

            migrationBuilder.RenameTable(
                name: "AspNetUserTokens",
                schema: "User",
                newName: "AspNetUserTokens");

            migrationBuilder.RenameTable(
                name: "AspNetUsers",
                schema: "User",
                newName: "AspNetUsers");

            migrationBuilder.RenameTable(
                name: "AspNetUserRoles",
                schema: "User",
                newName: "AspNetUserRoles");

            migrationBuilder.RenameTable(
                name: "AspNetUserLogins",
                schema: "User",
                newName: "AspNetUserLogins");

            migrationBuilder.RenameTable(
                name: "AspNetRoles",
                schema: "User",
                newName: "AspNetRoles");
        }
    }
}
 

Когда « база.OnModelCreating(конструктор); находится вверху , перемещает все, кроме «AspNetUserClaims», «AspNetRoleClaims» . когда он в конце, он визеверса.

Комментарии:

1. Похоже, в вашем коде нет проблем. Можете ли вы поделиться созданной миграцией?

2. Что делать, если вы установите «Пользователь» в качестве схемы по умолчанию?