首页 > 其他分享 >EF Core Database Migration

EF Core Database Migration

时间:2022-09-21 03:00:05浏览次数:114  
标签:Core xxx Database EF Migration 迁移 Microsoft

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

标签:Core,xxx,Database,EF,Migration,迁移,Microsoft
From: https://www.cnblogs.com/keirahuy/p/16714269.html

相关文章