从EF 5 Code First Migrations生成完整的SQL脚本

Mat*_*son 136 entity-framework ef-migrations

如何使用Entity Framework 5 Code First Migrations创建从初始(空)状态到最新迁移的完整数据库脚本?

博客文章在MSDN博客暗示要做到这一点,但它似乎创建一个空的脚本:

Update-Database -Script -SourceMigration: $InitialDatabase
Run Code Online (Sandbox Code Playgroud)

Mat*_*son 272

API似乎已经改变(或者至少,它对我不起作用).

在程序包管理器控制台中运行以下按预期方式工作:

Update-Database -Script -SourceMigration:0
Run Code Online (Sandbox Code Playgroud)

  • 在尝试了我能想到的所有内容之后,真正试用并试错了:) (25认同)
  • 我意识到这是正确的答案,但是当你的参数通常是一个字符串时,你究竟发现0如何工作?! (11认同)
  • 为了防止有人在EfCore中查看如何执行此操作并最终像我一样,命令是:`dotnet ef migrations script`.有关文档的更多信息:https://docs.microsoft.com/en-us/ef/core/managing-schemas/migrations/#generating-a-sql-script (5认同)
  • @Multitut:不,它只会做结构. (2认同)

Tah*_*lid 8

为了增加Matt wilson的答案,我有一堆代码优先实体类但没有数据库,因为我没有备份.所以我在我的Entity Framework项目上做了以下事情:

在Visual Studio中打开包管理器控制台并键入以下内容:

Enable-Migrations

Add-Migration
Run Code Online (Sandbox Code Playgroud)

为迁移命名,例如"初始",然后创建迁移.最后输入以下内容:

Update-Database

Update-Database -Script -SourceMigration:0
Run Code Online (Sandbox Code Playgroud)

最后一个命令将从您的实体类创建数据库表(假设您的实体类格式正确).


Jus*_*ard 7

对于使用实体框架核心的人都在这里结束。这就是你的做法。

# Powershell / Package manager console
Script-Migration

# Cli 
dotnet ef migrations script
Run Code Online (Sandbox Code Playgroud)

您可以使用-Fromand -To参数生成更新脚本,以将数据库更新为特定版本。

Script-Migration -From 20190101011200_Initial-Migration -To 20190101021200_Migration-2
Run Code Online (Sandbox Code Playgroud)

https://docs.microsoft.com/zh-cn/ef/core/managing-schemas/migrations/#generate-sql-scripts

此命令有几个选项。

迁移应该是运行脚本之前应用到数据库的最后一个迁移。如果未应用任何迁移,请指定0(这是默认设置)。

的迁移是将运行该脚本后应用到数据库的最后一个迁移。这默认为项目中的上一次迁移。

幂等可任选地生成的脚本。该脚本仅在尚未将迁移应用于数据库的情况下才应用。如果您不完全知道上一次应用到数据库的迁移是什么,或者如果您要部署到可能每个迁移不同的多个数据库,这将很有用。