如何在迁移中删除和重新创建所选表 code-first?

我想用一千个列丢弃表格并允许迁移来重新创建它。
我可以发布


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 to new window 并从那里执行。

但是有没有一种简单的方法来使用代码迁移?
已邀请:

董宝中

赞同来自:

我看到了两种方法:

从数据库中删除表

生成新的迁移 /通过
Add-Migration

/. 将生成创建缺失表的新迁移。

移民 /使用
Update-Database

/

OR

从上下文中删除本质 /不要忘记删除与其他实体的所有连接/

通过迁移
Add-Migration

/它会产生一种扔桌子的方法 /

执行迁移
Update-Database


基本上在上下文中添加

生成新的迁移
Add-Migration

/它会产生一种方法 create table/

执行迁移
Update-Database


希望它会有所帮助!

诸葛浮云

赞同来自:

为此,还有另一种选择:

手动扔掉你想要重新创造的桌子

从表中删除记录 "__EFMigrationsHistory", 相关表格

跑 "update-database"

它应该再次启动不在历史记录中的所有迁移。 如果您有多个表格的迁移,请小心。 您可能需要省略一些迁移并手动添加更改。

移动 DbSets 从上下文也应该工作,可能更好,但对我来说 Entity-Framework-Core 它根本不起作用。

诸葛浮云

赞同来自:

使用嵌套内容删除迁移文件夹。

如何手动删除表

运行命令 update-database 来自包调度员控制台

一切都会像它一样工作
快乐编码

二哥

赞同来自:

我确定的软件方法。 但不是缺乏尝试。

但这是我的成功:

在 SQL Management Studio 我生成了整个数据库的场景 /或者你知道的表是相关的/. 我发现了任何外部关键限制 /FK/, 索引等。与之相关 MyTable. 还 sql 生成运营商 Insert 为了 MyTable. 删除限制,删除表,创建一个表 /显然,使用相应的字段顺序/, 插入数据,重新创建限制 FK.

只是为了检查数据库,我试图对数据库进行更改。


ADD-MIGRATION XYZ
UPDATE-DATABASE -VERBOSE


一切都在工作。

要回复问题请先登录注册