Backend - C# EF Core 执行迁移 Migrate

目录

一、创建Postgre数据库

二、安装包

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

(二)安装所需包

三、执行迁移命令

1. 作用

2. 操作位置

3. 执行(针对visual studio)

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

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

生成迁移文件:

执行迁移,更新数据库:

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

(1)先回滚

① 回滚到指定迁移文件:

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

 (2)再删除

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

(一)安装 .NET SDK

确认是否已安装的命令:

(二)安装 dotnet-ef 工具(局部)

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

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

(2)切换工作目录

2. 创建dotnet-tools.json 文件

(1)创建文件的命令

(2)执行该命令的作用

3. 安装dotnet-ef工具

(1)在线安装命令

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

① 下载离线工具

② 设置套件来源

③ 取消其他套件来源

④ 执行下载安装

 4. 查看已安装的工具

 5. 安装 Microsoft.EntityFrameworkCore.Design

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

(2)第二种:执行dotnet命令

(三)使用 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 工具(局部)

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

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

2. 创建dotnet-tools.json 文件

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

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

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>
(2)第二种:执行dotnet命令

执行命令:

dotnet add package microsoft.entityframeworkcore.design

(三)使用 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.mzph.cn/pingmian/66709.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

GESP202312 四级【小杨的字典】题解(AC)

》》》点我查看「视频」详解》》》 [GESP202312 四级] 小杨的字典 题目描述 在遥远的星球&#xff0c;有两个国家 A 国和 B 国&#xff0c;他们使用着不同的语言&#xff1a;A 语言和 B 语言。小杨是 B 国的翻译官&#xff0c;他的工作是将 A 语言的文章翻译成 B 语言的文章…

【软考网工笔记】计算机基础理论与安全——网络规划与设计

HFC 混合光纤同轴电缆网 HFC: Hybrid Fiber - Coaxial 的缩写&#xff0c;即混合光纤同轴电缆网。是一种经济实用的综合数字服务宽带网接入技术。 HFC 通常由光纤干线、同轴电缆支线和用户配线网络三部分组成&#xff0c;从有线电视台出来的节目信号先变成光信号在干线上传输…

KubeVirt 进阶:设置超卖比、CPU/MEM 升降配、在线磁盘扩容

前两篇文章&#xff0c;我们分别介绍 Kubevirt 的安装、基本使用 以及 将 oVirt 虚拟机迁移到 KubeVirt&#xff0c;我们留了两个ToDo&#xff0c;一个是本地磁盘的动态分配&#xff0c;一个是固定 IP 的需求&#xff0c;本期我们先解决第一个&#xff0c;本地磁盘的动态分配。…

自动化脚本本地可执行但是Jenkins上各种报错怎么解决

作者碎碎念&#xff1a; 测试环境 Jenkinsdockerpythonunittest&#xff0c; 测试问题&#xff1a;本人在写关于SAP4Me网站的自动化脚本时遇到一个问题 本地怎么都跑的通 但是一上Jenkins会出现各种各样的问题 因为在Jenkins里面脚本是放在docker环境里面跑的 所以环境的差异…

TaskBuilder前端组件简介

3.3.3.1前端组件的分类 前端页面是由众多组件层层嵌套构成的&#xff0c;这些组件是任讯信息自主研发的一套前端UI组件&#xff0c;称为tfp组件&#xff0c;这些组件根据其功能和特点又分为几大类&#xff0c;它们的继承关系如下图所示&#xff1a; 从图中可知&#xff0c;所…

linux下shell中使用上下键翻出历史命名时出现^[[A^[[A^[[A^[[B^[[B的问题解决

前言 今天在使用linux的时候&#xff0c;使用上下键想翻出历史命令时&#xff0c;却出现[[A[[A[[A[[B^[[B这种东东&#xff0c;而tab键补全命令的功能也无法使用。最终发现是由于当前用户使用的shell是/bin/sh的原因。 解决方法 运行以下命令&#xff0c;将默认 shell 设置为…

Kafka优势剖析-幂等性和事务

目录 1. 幂等性&#xff08;Idempotence&#xff09; 1.1 什么是幂等性&#xff1f; 1.2 幂等性的实现 1.2.1 生产者 ID 和序列号 1.2.2 重复消息检测 1.2.3 幂等性的优势 1.3 幂等性的配置 2. 事务支持&#xff08;Transactions&#xff09; 2.1 什么是事务支持&…

FPGA的 基本结构(Xilinx 公司Virtex-II 系列FPGA )

以Xilinx 公司Virtex-II 系列FPGA 为例&#xff0c;其基本结构由下图所示。它是主要由两大部分组成&#xff1a;可编程输入/输出&#xff08;Programmable I/Os&#xff09;部分和内部可配置&#xff08;Configurable Logic&#xff09;部分。 可编程输入/输出&#xff08;I/Os…

《零基础Go语言算法实战》【题目 1-11】格式化字符串

《零基础Go语言算法实战》 【题目 1-11】格式化字符串 在 Go 语言中&#xff0c;找到使用变量格式化字符串而不打印值的简单方法。 【解答】 在 Go 语言中&#xff0c;在不打印值的情况下进行格式化的最简单方法是使用 fmt.Sprintf() 函数&#xff0c; 它返回一个格式化的…

Virtualbox7.1.4安装Proxmox

准备工作 有以下两个大步骤&#xff1a; 第一步、安装Virtualbox 最新版本安装过程遇到问题参考&#xff1a; VirtualBox新版本报错 Invalid installation directory解决方案_virtualbox invalid installation directory-CSDN博客 第二步、下载Proxmox 官网下载地址&…

Apache JMeter 压力测试使用说明

文章目录 一、 安装步骤步骤一 下载相关的包步骤二 安装 Jmeter步骤三 设置 Jmeter 工具语言类型为中文 二、使用工具2.1 创建测试任务步骤一 创建线程组步骤二 创建 HTTP 请求 2.2 配置 HTTP 默认参数添加 HTTP消息头管理器HTTP请求默认值 2.3 添加 查看结果监听器2.4 查看结果…

yum换源

背景描述 源&#xff1a;阿里云&#xff1a; 系统&#xff1a;centos7 https://developer.aliyun.com/mirror/其他参考地址&#xff1a; https://developer.aliyun.com/mirror/centos?spma2c6h.13651102.0.0.3e221b11UchtP5https://developer.aliyun.com/mirror/centos-vau…

vivado时序约束和优化

相关资料 参考视频 基础篇&#xff1a; 05如何科学设计FPGA:VIVADO中的时序约束和分析以及进阶技巧_哔哩哔哩_bilibili 升级篇&#xff1a; 05如何科学设计FPGA:VIVADO中的时序约束和分析以及进阶技巧_哔哩哔哩_bilibili 参考文章 csdn写的很好的文章目录&#xff1a; …

《跟我学Spring Boot开发》系列文章索引❤(2025.01.09更新)

章节文章名备注第1节Spring Boot&#xff08;1&#xff09;基于Eclipse搭建Spring Boot开发环境环境搭建第2节Spring Boot&#xff08;2&#xff09;解决Maven下载依赖缓慢的问题给火车头提提速第3节Spring Boot&#xff08;3&#xff09;教你手工搭建Spring Boot项目纯手工玩法…

从Linux本地软件存储库安装MySQL

许多Linux发行版在其本机软件存储库中包含MySQL服务器、客户端工具和开发组件的版本&#xff0c;并且可以与平台的标准包管理系统一起安装。本节提供使用这些包管理系统安装MySQL的基本说明。 本机软件包通常比当前可用的版本落后几个版本。您通常也无法安装开发里程碑版本&am…

[数据结构]倒排索引介绍

倒排索引详解 1. 原理 倒排索引&#xff08;Inverted Index&#xff09;是一种数据结构&#xff0c;用于存储在文档集合中出现的单词&#xff0c;以及这些单词出现的文档列表。这种索引方式常用于全文搜索引擎&#xff0c;如Elasticsearch和Solr&#xff0c;以快速进行文本搜…

AIDD-人工智能药物设计-人工智能破解酶稳定性定向进化中的多个突变位点高效重组问题

mLife | 人工智能破解酶稳定性定向进化中的多个突变位点高效重组问题 优化酶的热稳定性对于蛋白质科学和工业应用至关重要。目前&#xff0c;通过&#xff08;半&#xff09;理性设计和随机诱变方法可以较为准确地设计多个增强酶热稳定性的单点突变。但当组合多个突变时&#…

Qt仿音乐播放器:媒体类

一、铺垫 我暂时只会音频系列的操作&#xff0c;我只能演示音频部分&#xff1b;但是QMediaPlayer是一个可以播放视频、音频的类&#xff1b;请同学们细读官方文档&#xff1b; 二、头文件 #include<QMediaPlayer> 头文件 #include<QMediaPlaylist> 三、演…

java随机数Random类

在 Java 中&#xff0c;Random 类用于生成随机数。它是 java.util 包的一部分&#xff0c;可以生成不同类型的随机数&#xff0c;例如整数、浮点数、布尔值等。Random 类的实例可以用来产生各种随机数据&#xff0c;广泛应用于游戏、测试、加密、数据模拟等场景。 1. 创建 Ran…

解决cursor50次使用限制问题并恢复账号次数

视频内容&#xff1a; 在这个视频教程中&#xff0c;我们将演示如何解决科sir软件50次使用限制的问题&#xff0c;具体步骤包括删除和注销账号、重新登录并刷新次数。教程详细展示了如何使用官网操作将账号的剩余次数恢复到250次&#xff0c;并进行软件功能测试。通过简单的操…