在Entity Framework 6 C#中获取特定迁移的SQL文件

Moh*_*een 8 entity-framework ef-code-first entity-framework-6

在Entity Framework 6中,我需要获取特定迁移文件的SQL脚本,并且我已经更新了数据库.我发现在update-database命令中我可以添加脚本参数将其导出到SQL,但我已经更新了数据库.我在Entity Framework Core中找到了一个Script-Migration以脚本名称作为参数调用的命令.实体框架中是否有类似的命令?

我也尝试了以下,我得到空SQL文件 更新数据库命令

ChW*_*ChW 17

是的,你可以这样做:

Update-Database -Script -SourceMigration: <pointFromWichYouWantToStartWithGeneration> -TargetMigration: <pointWhereToEndWithGeneration>
Run Code Online (Sandbox Code Playgroud)

要为所有迁移创建脚本,请执行以下命令:

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

它不会将更改应用于数据库,而是生成SQL脚本文件.因此,即使已将迁移应用于数据库,也可以生成SQL脚本.

在这里,您可以找到有关它的更多信息 - 实体框架代码第一次迁移 - 获取SQL脚本.

运行该Update-Database命令,但这次指定–Script标志,以便将更改写入脚本而不是应用.我们还将指定源迁移和目标迁移以生成脚本.


zap*_*ppa 9

如果您现在在 .net core 中,请使用

Script-Migration -From <PreviousMigration> -To <LastMigration>
Run Code Online (Sandbox Code Playgroud)

如果不执行上次迁移,则可以运行

Script-Migration -From <PreviousMigration>
Run Code Online (Sandbox Code Playgroud)

不要在迁移名称中包含日期。如果数据库中的迁移名称类似20210209184835_add-parent-id-to-contract,那么在包管理器中运行以下命令

Script-Migration -From add-parent-id-to-contract
Run Code Online (Sandbox Code Playgroud)


小智 5

如果要为迁移 N 生成 -Script,请指定 -SourceMigration N-1(先前迁移)和 -TargetMigration N