当我们在编写基于数据库的应用程序时,随着需求的增加和改变,我们需要升级我们的数据库,变更数据库表的字段,当我们的系统的不同版本被部署到了不同的客户那里,在需要给客户升级时,我们如何实现数据库模式 (schema) 的自动升级呢?
传统的管理办法是针对每个数据库版本,开发者手工编写升级脚本。在需要升级的时候,找到对应的脚本挨个升级到指定的版本。编写升级脚本是一件枯燥乏味且容易出错的工作,手动升级也需要细心的操作。
数据库迁移工具能否帮助我们解决这个问题,在 JAVA 世界有 Red Gate,Liquibase 这样的解决方案。.Net Core 提供了 Entity Framework 数据迁移工具。它可以帮助我们自动管理数据库模式,把不同版本的数据库升级到最新版本上。
下面以 asp.net core 服务为例,简要介绍如何使用 .Net Core Entity Framework Database Migration Tools
安装 EF 工具
首先我们需要安装 dotnet-ef,打开命令行,输入如下命令:
dotnet tool install --global dotnet-ef
如果不安装这个工具,我们可能会看到下面的错误:
创建数据库项目,建立第一个迁移
进入 Visual Studio 创建一个 asp.net core 项目,然后在 program.cs 里加入以下代码:
builder.Services.AddDbContext<YourDbContext>(
options => options.UseSqlServer("name=ConnectionStrings:DefaultConnection"));
我们的配置文件,应该是这个样子的:
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"AllowedHosts": "*",
"ConnectionStrings": {
"DefaultConnection": "Server=172.28.64.136;Database=YourDatabaseName;UID=sa;PWD=YourPassword;trustServerCertificate=true"
}
}
新建一个 YourDbContext 类,它应该类似于下面的代码:
public class YourDbContext : DbContext
{