1. 江湖人士首页
  2. IT江湖

EF Core 怎样迁移数据库

迁移是一种通过保留数据使数据库模式与EF Core模型保持同步的方法。

EF核心迁移

根据上图,EF Core API从域(实体)类构建EF Core模型,EF Core迁移将基于EF Core模型创建或更新数据库模式。每当更改域类时,都需要运行迁移以使数据库架构保持最新。

EF Core迁移是一组命令,您可以在NuGet Package Manager控制台或dotnet命令行界面(CLI)中执行这些命令。

下表列出了EF Core中的重要迁移命令。

PMC命令dotnet CLI命令用法
add-migration <迁移名称>添加<迁移名称>通过添加迁移快照创建迁移。
删除迁移去掉删除上次迁移快照。
更新数据库更新根据上次迁移快照更新数据库模式。
脚本迁移脚本使用所有迁移快照生成SQL脚本。

添加迁移

在第一次,您定义了初始域类。此时,您的应用程序没有可以存储域类数据的数据库。因此,首先,您需要创建迁移。

从Visual Studio中的菜单Tools – > NuGet Package Manager – > Package Manager Console打开Package Manager Console,然后执行以下命令添加迁移。

Package Manager Console
PM> add-migration MyFirstMigration

如果使用的是dotnet命令行界面,请执行以下命令。

CLI
> dotnet ef migrations add MyFirstMigration

在上面的命令中,MyFirstMigration是迁移的名称。这将在Migrations项目的文件夹中创建三个文件,如下所示。

EF Core 怎样迁移数据库 1
  1. <timestamp> _ <迁移名称> .cs:主迁移文件,包括Up()和Down()方法中的迁移操作。Up()方法包括用于创建DB对象的代码,Down()方法包括用于删除DB对象的代码。
  2. <timestamp> _ <迁移名称> .Designer.cs:迁移元数据文件,其中包含EF Core使用的信息。
  3. <contextclassname> ModelSnapshot.cs:当前模型的快照。这用于确定创建下一次迁移时更改的内容。

现在,在创建迁移快照之后,就可以创建数据库了。

创建或更新数据库

使用以下命令创建或更新数据库架构。

Package Manager Console
PM> Update-Database
CLI
> dotnet ef database update

Update命令将基于上下文和域类以及使用add-migrationor add命令创建的迁移快照创建数据库。

如果这是第一次迁移,那么它还将创建一个名为的表__EFMigrationsHistory,该表将存储所有迁移的名称,以及它们何时应用于数据库。

EF Core 怎样迁移数据库 2

删除迁移

如果未应用于数据库,则可以删除上次迁移。使用以下删除命令删除上次创建的迁移文件并还原模型快照。

Package Manager Console
PM> remove-migration
CLI
> dotnet ef migrations remove

上述命令将删除上次迁移,并将模型快照还原为上一次迁移。请注意,如果迁移已应用于数据库,则会引发以下异常。

迁移<迁移名称>已应用于数据库。还原它然后再试一次。如果迁移已应用于其他数据库,请考虑使用新迁移还原其更改。

恢复迁移

假设您更改了域类并创建了MySecondMigration使用该add-migration命令命名的第二个迁移,并使用该命令将此迁移应用于数据库Update。但是,由于某种原因,您希望将数据库还原到以前的状态。在这种情况下,使用该update-database <migration name>命令将数据库还原到指定的先前迁移快照。

Package Manager Console
PM> Update-database MyFirstMigration
CLI
> dotnet ef database update MyFirstMigration.

以上命令将根据命名的迁移还原数据库,MyFirstMigration并删除为第二次迁移命名应用的所有更改MySecondMigration。这也将删除数据库中表的MySecondMigration条目__EFMigrationsHistory

注意:这不会删除与之相关的迁移文件MySecondMigration。使用remove命令将其从项目中删除。

生成SQL脚本

使用以下命令为数据库生成SQL脚本。

Package Manager Console
PM> script-migration
CLI
> dotnet ef migrations script

上面的脚本命令将默认包含所有迁移的脚本。您可以使用-to-from选项指定一系列迁移。

Namesilo优惠:新用户省 $1 域名注册-优惠码:45D%UYTcxYuCloZ 国外最便宜域名!点击了解更多

特别优惠:免费赠送 $50 Vultr主机-限时优惠!英文站必备海外服务器!点击了解更多

VPS优惠:搬瓦工优惠码:BWH34QMFYT2R 最高省6.38%你懂的主机-一直优惠!点击了解更多

原创文章,作者:江小编,如若转载,请注明出处:https://jhrs.com/2019/27240.html

扫码关注【江湖人士】公众号,您会获得关于国外被动收入的最新资讯

WA付费会员QQ群:387027533,加这个群需要回答您的WA会员名,待核实后予以通过

普通QQ交流群:178758794,可分享交流建站的各类经验和知识

发表评论

电子邮件地址不会被公开。 必填项已用*标注

16 + 20 =