更改与实体模型相关的表名

时间:2017-06-01 11:37:38

标签: entity-framework

我的数据库中有一些名为“Test”的数据。 我已经复制了一个名为“CopyTest”的表。

如果我改变:

modelBuilder.Entity<IISLog>()
    .ToTable("Test");

为:

modelBuilder.Entity<IISLog>()
    .ToTable("CopyTest");

我收到错误说:

  自创建数据库以来,

上下文已发生变化。考虑使用   代码优先迁移以更新数据库

我如何阻止这种显示?这只是一个表名更改:)

3 个答案:

答案 0 :(得分:1)

  • 解决方案1 ​​

删除第一次迁移,然后尝试:

Add-Migration <migration-name>

然后打开“迁移文件”并手动更改“表名”。之后:

update-database -verbose

如果不起作用。

  • 解决方案2

尝试从 SQL server Management studio 删除迁移历史记录。

参考网址 - Resetting Entity Framework Migrations to a clean Slate

答案 1 :(得分:1)

迁移到初始数据库 与

Update-Database -TargetMigration:"name_of_migration"

然后更新到您当前的状态:

Update-Database 

如有必要,请再次添加迁移:

Add-Migration TableNameUpdate

答案 2 :(得分:0)

使用add-migration Rename_Test_To_CopyTest

添加新迁移

然后,在结果文件中,使用RenameTable方法:

public partial class Rename_Test_To_CopyTest : DbMigration
{
    public override void Up()
    {
        RenameTable("dbo.Test", "dbo.CopyTest");
    }

    public override void Down()
    {
        RenameTable("dbo.CopyTest", "dbo.Test");
    }
}

然后像往常一样使用update-database