EF Core Database Migration

1. 准备工作

1.1 创建项目

(以下使用.NET Core 3.1)

1.1 创建项目ASP.NET Core Web API,命名为WebApi

1.2 新建项目.NET Core的类库,命名为 Core

1.3 新建项目.NET Core的类库,命名为 Infrastructure

1.4 WebApi添加项目引用Core, Infrastructure

1.5 项目Infrastructure添加项目引用Core

1.2 安装包

1.2.1 为项目Core安装包:

Install-Package Microsoft.EntityFrameworkCore -v 5.0.17
Install-Package Microsoft.EntityFrameworkCore.SqlServer -v 5.0.17
Install-Package Microsoft.EntityFrameworkCore.Design -v 5.0.17
Install-Package Microsoft.EntityFrameworkCore.Tools -v 5.0.17

1.2.2 为项目WebApi安装包:

Install-Package Microsoft.EntityFrameworkCore.Tools -v 5.0.17

1.3. DB First, 反向工程生成DbContext和Entities

Reference: EF Core 工具参考(包管理器控制台)- EF Core | Microsoft Docs

1.3.1 新建一个测试用的DB,新建一个测试用的DB Table

Scaffold-DbContext "Server=xxx;Database=xxx;User ID=sa;Password=xxxx;Trusted_Connection=false;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Entities -ContextDir Context -Context AppDbContext -UseDatabaseNames

1.3.2 生成的Context和Entities文件夹

生成的Entities文件夹不移动位置,

生成的Context文件夹移动到项目Infrastructure里面。

(并把Connection String从DbContext代码里移除。)

1.4. 连接数据库

1.4.1 添加到appsettings.json

"ConnectionStrings": {
    "AppConnectionString": "Server=xxx;Database=xxx;User ID=xxx;Password=xxx;Trusted_Connection=false;MultipleActiveResultSets=true"
  },

1.4.2 添加到StartUp

// Add Data DbContext
services.AddDbContext<AppDbContext>(
options => options.UseSqlServer(Configuration.GetConnectionString("AppConnectionString")));

2. 迁移

(找到DbContext所在的项目位置)

2.1 管理迁移

Reference: https://learn.microsoft.com/en-us/ef/core/managing-schemas/migrations/managing?tabs=dotnet-core-cli

1) 创建迁移

Add-Migration InitialCreate

2) 删除(最后一次)迁移

Remove-Migration

3) 原始 SQL

migrationBuilder.Sql(
@"
    EXEC ('CREATE PROCEDURE getFullName
        @LastName nvarchar(50),
        @FirstName nvarchar(50)
    AS
        RETURN @LastName + @FirstName;')");

2.2 应用迁移

Reference: https://learn.microsoft.com/en-us/ef/core/managing-schemas/migrations/applying?tabs=dotnet-core-cli

2.2.1 SQL脚本

将迁移部署到生产数据库的推荐方法是生成 SQL 脚本。

(因为将架构更改应用于生产数据库是一项可能涉及数据丢失的潜在危险操作,使用SQL 脚本可以检查其准确性。)

1)从最开始到最后一次迁移

Script-Migration

2) 从指定迁移到最后一次迁移

Script-Migration AddNewTables

3) 从指定迁移到指定迁移(from - to)

Script-Migration AddNewTables AddAuditTable

2.2.2 命令行工具

1)更新到最新的迁移

Update-Database

2)更新到指定的迁移

Update-Database AddNewTables
posted @   keira_huy  阅读(120)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
点击右上角即可分享
微信分享提示