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