Как переименовать таблицу миграции в рамках сущности? - PullRequest
0 голосов
/ 28 мая 2019

Я хотел бы переименовать таблицу миграции с dbo.__MigrationHistory на SYSTEM.MigrationsHistory.Как я могу это сделать?

Мне нужно наследовать от IdentityDbContext, а не от HistoryContext, по этой причине я не могу использовать код: modelBuilder.Entity<HistoryRow>().ToTable(tableName: "MigrationHistory", schemaName: "SYSTEM")

Я прилагаю код, который яЯ использую:

    public class ApplicationDbContext : IdentityDbContext<ApplicationUser, ApplicationRole, long, ApplicationUserLogin, ApplicationUserRole, ApplicationUserClaim>
    {
        public ApplicationDbContext()
            : base("DefaultConnection")
        {
        }

        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            base.OnModelCreating(modelBuilder);

            // ACCOUNT
            modelBuilder.Entity<ApplicationUser>().ToTable(tableName: "Users", schemaName: "ACCOUNT");
            modelBuilder.Entity<ApplicationRole>().ToTable(tableName: "Roles", schemaName: "ACCOUNT");
            modelBuilder.Entity<ApplicationUserLogin>().ToTable(tableName: "UserLogins", schemaName: "ACCOUNT");
            modelBuilder.Entity<ApplicationUserRole>().ToTable(tableName: "UserRoles", schemaName: "ACCOUNT");
            modelBuilder.Entity<ApplicationUserClaim>().ToTable(tableName: "UserClaims", schemaName: "ACCOUNT");

            // SYSTEM
            // modelBuilder.Entity<HistoryRow>().ToTable(tableName: "MigrationHistory", schemaName: "SYSTEM");
        }


        public static ApplicationDbContext Create()
        {
            return new ApplicationDbContext();
        }
    }

Заранее спасибо

С уважением

1 Ответ

1 голос
/ 29 мая 2019

Шаги для переименования таблицы миграции

  1. Создать класс MyHistoryContext:
    using System.Data.Common;
    using System.Data.Entity;
    using System.Data.Entity.Migrations.History;

    namespace CustomizableMigrationsHistoryTableSample
    {
        public class MyHistoryContext : HistoryContext
        {
            public MyHistoryContext(DbConnection dbConnection, string defaultSchema)
                : base(dbConnection, defaultSchema)
            {
            }

            protected override void OnModelCreating(DbModelBuilder modelBuilder)
            {
                base.OnModelCreating(modelBuilder);
                modelBuilder.Entity<HistoryRow>().ToTable(tableName: "MigrationHistory", schemaName: "SYSTEM");
            }
        }
    }

Создать класс ModelConfiguration
    using System.Data.Entity;

    namespace CustomizableMigrationsHistoryTableSample
    {
        public class ModelConfiguration : DbConfiguration
        {
            public ModelConfiguration()
            {
                this.SetHistoryContext("System.Data.SqlClient",
                    (connection, defaultSchema) => new MyHistoryContext(connection, defaultSchema));
            }
        }
    }
Если у вас есть существующие миграции, вам нужно будет удалить миграции и базу данных для выполнения следующих команд:

Для создания migrations папки и configuration класса:

enable-migrations

Для дополнительной миграции first_migration

add-migration <migration_name>

Для применения миграции (ий) в базе данных

update-database

Кредиты: Иван Стоев

Перед началом работы необходимо знать, что вы можете настроить таблицу истории миграций только перед применением первой миграции.

Подробная информация: Настройка таблицы истории миграций

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...