161

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

MSDN Blog上的博客文章建议这样做,但它似乎创建了一个空脚本:

Update-Database -Script -SourceMigration: $InitialDatabase
4

3 回答 3

308

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

在包管理器控制台中运行以下命令按预期工作:

Update-Database -Script -SourceMigration:0
于 2012-12-18T18:44:01.763 回答
41

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

# Powershell / Package manager console
Script-Migration

# Cli 
dotnet ef migrations script

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

Script-Migration -From 20190101011200_Initial-Migration -To 20190101021200_Migration-2

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

此命令有几个选项。

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

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

可以选择生成幂等脚本。此脚本仅在尚未应用到数据库时才应用迁移。如果您不确切知道应用于数据库的最后一次迁移是什么,或者如果您要部署到多个数据库,而这些数据库可能各自处于不同的迁移中,这将非常有用。

于 2019-03-27T16:06:28.917 回答
10

为了补充马特威尔逊的回答,我有一堆代码优先的实体类,但没有数据库,因为我没有备份。所以我在我的实体框架项目上做了以下事情:

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

Enable-Migrations

Add-Migration

为您的迁移命名,例如“初始”,然后创建迁移。最后键入以下内容:

Update-Database

Update-Database -Script -SourceMigration:0

最后的命令将从您的实体类创建您的数据库表(前提是您的实体类格式正确)。

于 2017-03-08T00:07:48.967 回答