C# 如何在实体框架中重命名迁移表?

C# 如何在实体框架中重命名迁移表?,c#,asp.net,.net,asp.net-mvc,entity-framework,C#,Asp.net,.net,Asp.net Mvc,Entity Framework,我想将迁移表从dbo.\uu MigrationHistory重命名为SYSTEM.MigrationsHistory。我怎么做 我需要从IdentityDbContext继承,而不是从HistoryContext继承,因此我不能使用代码:modelBuilder.Entity().ToTable(tableName:“MigrationHistory”,schemaName:“SYSTEM”) 我附上我正在使用的代码: public类ApplicationDbContext:IdentityD

我想将迁移表从
dbo.\uu MigrationHistory
重命名为
SYSTEM.MigrationsHistory
。我怎么做

我需要从
IdentityDbContext
继承,而不是从
HistoryContext
继承,因此我不能使用代码:
modelBuilder.Entity().ToTable(tableName:“MigrationHistory”,schemaName:“SYSTEM”)

我附上我正在使用的代码:

public类ApplicationDbContext:IdentityDbContext
{
公共应用程序上下文()
:base(“默认连接”)
{
}
模型创建时受保护的覆盖无效(DbModelBuilder modelBuilder)
{
基于模型创建(modelBuilder);
//帐目
modelBuilder.Entity().ToTable(表名:“用户”,模式名:“帐户”);
modelBuilder.Entity().ToTable(表名:“角色”,模式名:“帐户”);
modelBuilder.Entity().ToTable(表名:“UserLogins”,模式名:“ACCOUNT”);
modelBuilder.Entity().ToTable(表名:“UserRoles”,模式名:“ACCOUNT”);
modelBuilder.Entity().ToTable(表名:“UserClaims”,模式名:“ACCOUNT”);
//系统
//modelBuilder.Entity().ToTable(表名:“MigrationHistory”,模式名:“SYSTEM”);
}
公共静态应用程序上下文创建()
{
返回新的ApplicationDbContext();
}
}
提前谢谢


关于重命名迁移表的步骤

  • 创建类
    MyHistoryContext
  • 使用System.Data.Common;
    使用System.Data.Entity;
    使用System.Data.Entity.Migrations.History;
    命名空间CustomizeLeMigrationShistoryTableSample
    {
    公共类MyHistoryContext:HistoryContext
    {
    公共MyHistoryContext(DbConnection DbConnection,字符串defaultSchema)
    :base(dbConnection,defaultSchema)
    {
    }
    模型创建时受保护的覆盖无效(DbModelBuilder modelBuilder)
    {
    基于模型创建(modelBuilder);
    modelBuilder.Entity().ToTable(表名:“MigrationHistory”,模式名:“SYSTEM”);
    }
    }
    }
    
  • 创建类
    ModelConfiguration
  • 使用System.Data.Entity;
    命名空间CustomizeLeMigrationShistoryTableSample
    {
    公共类模型配置:DbConfiguration
    {
    公共模型配置()
    {
    这个.SetHistoryContext(“System.Data.SqlClient”,
    (connection,defaultSchema)=>new MyHistoryContext(connection,defaultSchema));
    }
    }
    }
    
  • 如果您有现有迁移,则需要删除迁移和数据库以执行以下命令:
  • 对于创建
    迁移
    文件夹和
    配置
    类:

    启用迁移
    
    对于添加迁移
    第一次迁移

    添加迁移
    
    用于在数据库中应用迁移

    更新数据库
    
    学分:

    在开始之前,您需要知道只有在应用第一次迁移之前才能自定义迁移历史记录表

    详细资料:

    HistoryContext
    派生类与普通的
    DbContext
    分离,仅用于自定义迁移历史记录表。所有这些都在这里解释。但是请注意链接中的以下段落-在开始之前,您需要知道您只能在应用第一次迁移之前自定义迁移历史记录表。。因此,如果您希望重命名现有的历史记录表,根据文档,这是不可能的。@IvanStoev谢谢您的回答。我需要从
    IdentityDbContext
    继承,而不是从
    HistoryContext
    继承,因此我无法使用它(我无法从两个类继承)。还有别的办法吗?你注意到“分开”这个词了吗?e、 g.
    class CustomHistoryContext:HistoryContext{…}
    -它与您的
    ApplicationDbContext
    无关。我注意到了它,但我不理解它,但我更理解它,我会做测试。