我的数据库中有一些名为“Test”的数据。 我已经复制了一个名为“CopyTest”的表。
如果我改变:
modelBuilder.Entity<IISLog>()
.ToTable("Test");
为:
modelBuilder.Entity<IISLog>()
.ToTable("CopyTest");
我收到错误说:
自创建数据库以来,上下文已发生变化。考虑使用 代码优先迁移以更新数据库
我如何阻止这种显示?这只是一个表名更改:)
答案 0 :(得分:1)
删除第一次迁移,然后尝试:
Add-Migration <migration-name>
然后打开“迁移文件”并手动更改“表名”。之后:
update-database -verbose
如果不起作用。
尝试从 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
。