1.Creating a Migration
[Command Line]
dotnet ef migrations add <name of migration>
[Package Manager console]
add-migration <name of migration>
创建迁移时,EF会将模型的当前状态与先前的迁移(如果存在)进行比较,并生成一个文件,该文件包含继承自Microsoft.EntityFrameworkCore.Migrations.Migration的类,该类具有Up和Down方法。 该类的名称与您为迁移指定的名称相同。 文件名本身是迁移的名称,带有时间戳。
Up方法包含C#代码,该代码将自上次迁移以来对模型所做的所有更改应用于数据库的架构。 Down方法撤消这些更改,将数据库恢复到先前迁移的状态。 还将创建或更新ModelSnapshot文件,具体取决于先前是否存在。
2.Removing A Migration
[Command Line]
dotnet ef migrations remove
[Package Manager Console]
remove-migration
您将使用此命令删除最新的迁移。 这将删除为最新迁移生成的类文件,还将ModelSnapshot文件恢复为先前迁移的状态。 如果没有挂起的迁移,将引发异常。 如果要删除已提交的迁移,则必须先撤消迁移。
您应该始终使用命令删除迁移,而不是简单地删除迁移代码文件,否则快照和迁移将彼此不同步。 然后,将来的迁移将基于不正确的模型。 但是,remove命令将识别迁移文件是否已删除,并将相应地还原快照。
如果需要删除在最近一次迁移之前生成的迁移,则必须首先删除所有后续的迁移,然后调整模型,然后创建新迁移以适应更改。
Applying A Migration
[Command line]
dotnet ef database update
[Package Manager Console]
update-database
.net core 代码
private void InitializeDatabase(IApplicationBuilder app)
{
using (var serviceScope = app.ApplicationServices.GetService<IServiceScopeFactory>().CreateScope())
{
serviceScope.ServiceProvider.GetRequiredService<PersistedGrantDbContext>().Database.Migrate();
}
}
除非另有说明,否则将应用所有挂起的迁移。 如果这是第一次迁移