我想删除一个包含一千列的表,让迁移重新创建它。 我可以发一个
DropTable("MyTableWithManyColumns");
但问题是我会像这样手动创建表
CreateTable(
"dbo.MyTable",
c => new
{
RowId = c.Int(nullable: false, identity: true),
// many columns follow...
})
.PrimaryKey(t => t.RowId);
更简单的方法是使用SSMS并右键单击Drop Create Table到新窗口并从那里执行。
但使用代码迁移有一种简单的方法吗?
答案 0 :(得分:8)
我可以看到两种可能的方式:
Add-Migration
)。将生成创建缺失表的新迁移Update-Database
)OR
Add-Migration
生成迁移(它将生成丢弃表方法)Update-Database
Add-Migration
生成新的迁移(它将生成创建表方法)Update-Database
希望它有所帮助!
答案 1 :(得分:2)
还有另一种选择:
它将再次运行所有不在历史记录中的迁移。如果您进行的迁移涉及多个表,请务必谨慎。您可能需要省略一些迁移,然后手动添加更改。
从Context中删除DbSet也应该可行,并且可能会更好,但是对我来说,在Entity-Framework-Core中,它根本没有用。
答案 2 :(得分:1)
一切正常 编码愉快
答案 3 :(得分:0)
我没有确定的编程方式。不是因为缺乏尝试。
这是我的成功:
在SQL Management Studio中,我为整个数据库(或您知道相关的表)生成了脚本。我发现任何与MyTable相关的外键(FK)约束,索引等。还为MyTable生成sql插入语句。删除约束,删除表,创建表(显然具有适当的字段顺序),插入数据,重新创建FK约束。
只是为了测试我尝试进行数据库更改的数据库。
ADD-MIGRATION XYZ
UPDATE-DATABASE -VERBOSE
一切正常。