Backend - C# EF Core 执行迁移 Migrate

server/2025/1/12 19:42:35/

目录

一、创建Postgre数据库

二、安装包

(一)查看是否存在该安装包

(二)安装所需包

三、执行迁移命令

1. 作用

2. 操作位置

3. 执行(针对visual studio)

查看迁移功能的常用命令:

查看已应用的迁移文件(只针对Entity Framework 6 ):

生成迁移文件:

执行迁移,更新数据库

若想回滚到之前的迁移状态:

(1)先回滚

① 回滚到指定迁移文件:

② 回滚所有迁移文件(重置数据库

 (2)再删除

四、使用 NET CLI 执行迁移(可跨平台)

(一)安装 .NET SDK

确认是否已安装的命令:

dotnet-ef%20%E5%B7%A5%E5%85%B7%EF%BC%88%E5%B1%80%E9%83%A8%EF%BC%89-toc" style="margin-left:40px;">(二)安装 dotnet-ef 工具(局部)

1. 进入项目根目录(有.csproj文件所在处)

(1)查看当前位置的命令

(2)切换工作目录

dotnet-tools.json%20%E6%96%87%E4%BB%B6-toc" style="margin-left:80px;">2. 创建dotnet-tools.json 文件

(1)创建文件的命令

(2)执行该命令的作用

dotnet-ef%E5%B7%A5%E5%85%B7-toc" style="margin-left:80px;">3. 安装dotnet-ef工具

(1)在线安装命令

(2)若不允许安装,提示下载的代理问题。则离线下载

① 下载离线工具

② 设置套件来源

③ 取消其他套件来源

④ 执行下载安装

 4. 查看已安装的工具

 5. 安装 Microsoft.EntityFrameworkCore.Design

(1)第一种:使用NuGet管理器

dotnet%E5%91%BD%E4%BB%A4-toc" style="margin-left:120px;">(2)第二种:执行dotnet命令

dotnet-ef%E5%B7%A5%E5%85%B7-toc" style="margin-left:40px;">(三)使用 dotnet-ef 工具

1. 查看迁移文件

2. 生成迁移文件

3. 执行迁移(更新数据库

4. 回滚

(1)先回滚

① 回滚到指定迁移文件

② 回滚所有迁移文件(重置数据库

 (2)再删除


一、创建Postgre数据库

使用数据库软件(如pgadmin),创建一个空的数据库(自定义数据库名、选择用户、记住密码)。

二、安装包

(一)查看是否存在该安装包

1. 使用命令查看是否安装:

Get-Package# 或者用
dotnet list package

2. 使用Visual Studio NuGet 管理器

3. 查看根目录文件内容,即 .csproj 文件内容

(二)安装所需包

首先,右键点击该项目,选择 "管理 NuGet 套件"。

然后,搜索 Microsoft.EntityFrameworkCore.Design,点击 "Install" 。

即,在根目录文件中(.csproj后缀的文件)会配置如下内容:

<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="9.0.0"><PrivateAssets>all</PrivateAssets><IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>

三、执行迁移命令

1. 作用

        使数据库表和本地模型类(实体类)的内容保持一致。

2. 操作位置

        在包管理器中执行命令。即,打开包管理器:VS菜单的工具 > NuGet包管理器 > 程序包管理器控制台。

3. 执行(针对visual studio)

在包管理器控制台中,依次执行如下命令

查看迁移功能的常用命令:
get-help about_entityframeworkcore
查看已应用的迁移文件(只针对Entity Framework 6 ):
Get-Migration
# 例如
Get-Migration -Context "BookContext" -Project "Repository" -StartupProject "Api"
生成迁移文件:
Add-Migration "XXX"# 若指定DbContext和项目时,用:
Add-Migration "自定义Migration名" -Context "自定义DbContext名" -Project "自定义Repository项目名" -StartupProject "自定义Api启动项目名"# 例如:
Add-Migration "Migration001" -Context "BookContext" -Project "Repository" -StartupProject "Api"
执行迁移,更新数据库
Update-Database <MigrationName># 例如
Update-Database -Context BookContext -Project Repository -StartupProject Api 
若想回滚到之前的迁移状态:
(1)先回滚
① 回滚到指定迁移文件:
Update-Database  "XXX"# 例如,回滚到Migration003文件
Update-Database "20241216054704_Migration003"  -Context BookContext -Project Repository -StartupProject Api
② 回滚所有迁移文件(重置数据库
Update-Database 0# 例如
Update-Database 0 -Context MesContext -Project Repository -StartupProject Api
 (2)再删除

即:删除尚未应用到数据库的一个迁移文件(先从时间最近的,最新的一个文件开始):

Remove-Migration# 例如
Remove-Migration  -Context BookContext -Project Repository -StartupProject Api

若要删除所有未应用的,那么就一直执行Remove-Migration 命令。

针对回滚到指定迁移文件,再执行删除的结果是:

直到提示:The migration XXX' has already been applied to the database. Revert it and try again. If the migration has been applied to other databases, consider reverting its changes using a new migration instead.就表明删除了所有未应用的迁移文件。

回滚所有迁移文件(重置数据库),再执行删除的结果是:

整个migrations文件夹都会自动被删除。

四、使用 NET CLI 执行迁移(可跨平台)

针对.NET Core和.NET 5+应用程序,可以使用NET CLE管理.NET项目。

(一)安装 .NET SDK

确认是否已安装的命令:

dotnet --version

dotnet-ef%20%E5%B7%A5%E5%85%B7%EF%BC%88%E5%B1%80%E9%83%A8%EF%BC%89" style="margin-left:0px;">(二)安装 dotnet-ef 工具(局部)

1. 进入项目根目录(有.csproj文件所在处)

(1)查看当前位置的命令
Get-Location
# 或简写:
gl
(2)切换工作目录
Set-Location "C:\Projects\MyNewProject"
# 或简写:
cd "C:\Projects\MyNewProject"

dotnet-tools.json%20%E6%96%87%E4%BB%B6" style="margin-left:0px;">2. 创建dotnet-tools.json 文件

(1)创建文件的命令
dotnet new tool-manifest
(2)执行该命令的作用

        在项目根目录下,自动生成一个 .config/dotnet-tools.json 文件,用于管理项目中使用的局部工具。

dotnet-ef%E5%B7%A5%E5%85%B7" style="margin-left:0px;">3. 安装dotnet-ef工具

(1)在线安装命令
dotnet tool install dotnet-ef
(2)若不允许安装,提示下载的代理问题。则离线下载
① 下载离线工具

        进入https://www.nuget.org/packages/dotnet-ef/,点击页面右边呈现的Download package,将下载好的dotnet-ef.9.0.0.nupkg文件随机存储在本地(例如,存储在C:\LocalNuGet中)。

② 设置套件来源

命令:

dotnet nuget add source "C:\LocalNuGet" --name LocalSource
③ 取消其他套件来源

右击该项目,选择 "管理 NuGet 套件",取消其他套件,只保留自己刚添加的LocalSource。

④ 执行下载安装

命令:

dotnet tool install --add-source "C:\LocalNuGet" dotnet-ef

 4. 查看已安装的工具

命令:

dotnet tool list

 5. 安装 Microsoft.EntityFrameworkCore.Design

如果前面已经安装Microsoft.EntityFrameworkCore.Design,则跳过该步骤。

(1)第一种:使用NuGet管理器

首先,右键点击该项目,选择 "管理 NuGet 套件"。

然后,搜索 Microsoft.EntityFrameworkCore.Design,点击 "Install" 。

即,在根目录文件中(.csproj后缀的文件)会配置如下内容:

<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="9.0.0"><PrivateAssets>all</PrivateAssets><IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
dotnet%E5%91%BD%E4%BB%A4" style="margin-left:0px;">(2)第二种:执行dotnet命令

执行命令:

dotnet add package microsoft.entityframeworkcore.design

dotnet-ef%E5%B7%A5%E5%85%B7" style="margin-left:0px;">(三)使用 dotnet-ef 工具

1. 查看迁移文件

命令:

dotnet ef migrations list# 例如:
dotnet ef migrations list --context DBContext
# 或者
dotnet ef migrations list --context DBContext --project "E:\test\myRepository" --startup-project "E:\test\myApi"

2. 生成迁移文件

命令:

# 例如
dotnet ef migrations add myappMigration001 
# 或者
dotnet ef migrations add myappMigration001 --context DBContext --project "E:\test\myappRepository" --startup-project "E:\CSharpPro\test\myApi"

3. 执行迁移(更新数据库

dotnet ef database <MigrationName># 例如
dotnet ef database update
# 或者
dotnet ef database update --context DBContext --project "E:\test\myappRepository" --startup-project "E:\CSharpPro\test\myApi"

4. 回滚

若想回滚到之前的迁移状态:

(1)先回滚
① 回滚到指定迁移文件
dotnet ef database update "XXX"# 例如,回滚到Migration003文件
dotnet ef database update "20241216054704_Migration003" --context DBContext --project "E:\test\myappRepository" --startup-project "E:\CSharpPro\test\myApi"
② 回滚所有迁移文件(重置数据库
dotnet ef database update 0# 例如,回滚到Migration003文件
dotnet ef database update 0 --context DBContext --project "E:\test\myappRepository" --startup-project "E:\CSharpPro\test\myApi"
 (2)再删除

即:删除尚未应用到数据库的一个迁移文件(先从时间最近的,最新的一个文件开始):

dotnet ef migrations remove# 例如
dotnet ef migrations remove --context DBContext --project "E:\test\myappRepository" --startup-project "E:\CSharpPro\test\myApi"


http://www.ppmy.cn/server/157208.html

相关文章

继承(补充)

大家好&#xff0c;今天补充一下继承上执行顺序的一点知识点&#xff0c;&#xff08;编者这两天要完成学院任务可能有点敷衍&#xff0c;抱歉抱歉&#xff09;&#xff0c;那么我们来看看。 [继承关系上的执行顺序] 1、父类静态代码优先于子类静态代码块执行,且是最早执行. …

东京大学联合Adobe提出基于指令的图像编辑模型InstructMove,可通过观察视频中的动作来实现基于指令的图像编辑。

东京大学联合Adobe提出的InstructMove是一种基于指令的图像编辑模型&#xff0c;使用多模态 LLM 生成的指令对视频中的帧对进行训练。该模型擅长非刚性编辑&#xff0c;例如调整主体姿势、表情和改变视点&#xff0c;同时保持内容一致性。此外&#xff0c;该方法通过集成蒙版、…

保证Mysql数据库到ES的数据一致性的解决方案

文章目录 1.业务场景介绍1.1 需求分析1.2 技术实现方案 2.业界常用数据一致性方案分析2.1 同步双写方案2.2 MQ异步双写方案2.3 扫表定期同步方案2.4 监听binlog同步方案 1.业务场景介绍 1.1 需求分析 某知名的在线旅游平台&#xff0c;在即将到来的春季促销活动之前&#xff…

Redis之key过期和删除事件

Redis中的事件是通过订阅/发布&#xff08;sub/pub&#xff09;功能来实现的。在redis中&#xff0c;某个key的过期事件和该key的删除事件&#xff0c;是不一样的。 对于每个redis的数据库操作&#xff0c;redis都会生成一个对应的事件。这些事件&#xff0c;形似以“__keyeven…

VUE3配置后端地址,实现前后端分离及开发、正式环境分离

新建.env.development及.env.production .env.development 指定开发环境地址.env.production 指定生产环境地址 格式如下 VITE_APP_BASE_APIhttp://localhost:8070只需要在对应文件写入对应的后端地址即可 修改env.d.ts /// <reference types"vite/client" /…

Kubernetes 使用自定义资源(CRD)扩展API

K8s CRD 即 Kubernetes CustomResourceDefinition&#xff0c;是 Kubernetes 提供的一种扩展机制&#xff0c;允许用户在 Kubernetes 集群中定义和使用自定义的资源类型。通过定义 CRD&#xff0c;用户可以在 Kubernetes 集群中创建、读取、更新和删除自定义资源对象&#xff0…

如何在 Ubuntu 22.04 上安装 Apache Tomcat 10 服务器教程

简介 在本教程中&#xff0c;我们将解释如何在 Ubuntu 22.04 上为 Java 应用程序安装 Apache Tomcat 10。 通过这份全面的分步教程&#xff0c;学习如何在 Linux 服务器上安装和配置 Apache Tomcat。从安装 Java 和下载 Tomcat 到设置专用用户和配置访问权限&#xff0c;本指…

了解RabbitMQ的工作原理

RabbitMQ是一个开源的消息代理系统&#xff0c;实现了高级消息队列协议&#xff08;AMQP&#xff09;。在现代分布式系统中&#xff0c;特别是在微服务架构中&#xff0c;RabbitMQ有广泛的应用。本文将详细介绍RabbitMQ的工作原理&#xff0c;并通过实践案例帮助读者理解和应用…