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.rhkb.cn/news/503433.html

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

相关文章

改进萤火虫算法之一:离散萤火虫算法(Discrete Firefly Algorithm, DFA)

离散萤火虫算法(Discrete Firefly Algorithm, DFA)是萤火虫算法的一种重要变种,专门用于解决离散优化问题。 一、基本概念 离散萤火虫算法将萤火虫算法的基本原理应用于离散空间,通过模拟萤火虫的闪烁行为来寻找全局最优解。在离散空间中,萤火虫的亮度代表解的优劣,较亮的…

Java SpringBoot使用EasyExcel导入导出Excel文件

点击下载《Java SpringBoot使用EasyExcel导入导出Excel文件(源代码)》 在 Java Spring Boot 项目中&#xff0c;导入&#xff08;读取&#xff09;和导出&#xff08;写入&#xff09; Excel 文件是一项常见的需求。EasyExcel 是阿里巴巴开源的一个用于简化 Java 环境下 Excel…

十年后LabVIEW编程知识是否会过时?

在考虑LabVIEW编程知识在未来十年内的有效性时&#xff0c;我们可以从几个角度进行分析&#xff1a; ​ 1. 技术发展与软件更新 随着技术的快速发展&#xff0c;许多编程工具和平台不断更新和改进&#xff0c;LabVIEW也不例外。十年后&#xff0c;可能会有新的编程语言或平台…

【Linux】文件的压缩与解压

目录 gzip和 gunzip bzip2 和 bunzip2(特点和gzip相似) xz和unxz(特点和gzip相似) zip 和 unzip tar gzip和 gunzip 特点&#xff1a;只能对单个的普通文件进行压缩 不能进行归档&#xff0c;压缩或解压后的源文件都不存在 压缩后所生成的压缩格式是.gz格式 压缩&…

touch详讲

&#x1f3dd;️专栏&#xff1a;https://blog.csdn.net/2301_81831423/category_12872319.html &#x1f305;主页&#xff1a;猫咪-9527-CSDN博客 “欲穷千里目&#xff0c;更上一层楼。会当凌绝顶&#xff0c;一览众山小。” 目录 基本语法 主要功能 常用选项详解 1. …

【开源免费】基于Vue和SpringBoot的贸易行业crm系统(附论文)

本文项目编号 T 153 &#xff0c;文末自助获取源码 \color{red}{T153&#xff0c;文末自助获取源码} T153&#xff0c;文末自助获取源码 目录 一、系统介绍二、数据库设计三、配套教程3.1 启动教程3.2 讲解视频3.3 二次开发教程 四、功能截图五、文案资料5.1 选题背景5.2 国内…

仓库叉车高科技安全辅助设备——AI防碰撞系统N2024G-2

在当今这个高效运作、安全第一的物流时代&#xff0c;仓库作为供应链的中心地带&#xff0c;其安全与效率直接关系到企业的命脉。 随着科技的飞速发展&#xff0c;传统叉车作业模式正逐步向智能化、安全化转型&#xff0c;而在这场技术革新中&#xff0c;AI防碰撞系统N2024G-2…

如何打开/处理大型dat文件?二进制格式.dat文件如何打开?Python读取.dat文件

背景&#xff1a; 希望查看C语言输出的二进制DAT文件&#xff0c;写入方式如下&#xff08;如果是视频或游戏&#xff0c;未必能使用这种方式打开&#xff0c;关键是需要知道数据的格式&#xff09; # 写入二进制的C语言fp fopen(str, "wb");for (int i 0; i < …

面向对象分析与设计Python版 活动图与类图

文章目录 一、活动图二、类图 一、活动图 活动图 活动图用于描述业务流程、工作流程或算法中的控制流。活动图强调的是流程中的各个步骤的先后顺序&#xff0c;它可以帮助系统分析师、设计师和程序员更好地理解系统的动态行为。 活动图与用例模型互为补充&#xff0c;主要用于…

51单片机——步进电机模块

直流电机没有正负之分&#xff0c;在两端加上直流电就能工作 P1.0-P1.3都可以控制电机&#xff0c;例如&#xff1a;使用P1.0&#xff0c;则需要把线接在J47的1&#xff08;VCC&#xff09;和2&#xff08;OUT1&#xff09;上 1、直流电机实验 要实现的功能是&#xff1a;直…

2024AAAI SCTNet论文阅读笔记

文章目录 SCTNet: Single-Branch CNN with Transformer Semantic Information for Real-Time Segmentation摘要背景创新点方法Conv-Former Block卷积注意力机制前馈网络FFN 语义信息对齐模块主干特征对齐共享解码头对齐 总体架构backbone解码器头 对齐损失 实验SOTA效果对比Cit…

数字IC设计高频面试题

在数字IC设计领域&#xff0c;面试是评估候选人技术能力和问题解决能力的重要环节。数字IC设计的复杂性和要求在不断提高。面试官通常会提出一系列面试题&#xff0c;以考察应聘者在数字设计、验证、时钟管理、功耗优化等方面的专业知识和实践经验。 这些题目不仅涉及理论知识…

Functions

1.trigonometric function 定义和图像 反三角函数是三角函数的反函数 versin(verse -sin)&#xff1a;1/sinx 性质 三角函数的公式 三角恒等式 周期性公式&#xff1a;直接画图记 公式记忆&#xff1a;先想象一个在第一象限的锐角 1&#xff1a;在坐标轴中旋转360 2.sin&am…

1/7 C++

练习&#xff1a;要求在堆区连续申请5个int的大小空间用于存储5名学生的成绩&#xff0c;分别完成空间的申请、成绩的录入、升序排序、成绩输出函数&#xff0c;并在主程序中完成测试 要求使用new #include <iostream>using namespace std; double *addr_new() {double …

[文献精汇]使用PyCaret预测 Apple 股价

介绍 开发一个机器学习模型来尝试通过线性回归分析来预测 Apple 股票的价格会很有趣。PyCaret 的库&#xff0c;这是一个开源的 Python 低代码机器学习库&#xff0c;可以自动化机器学习工作流程&#xff0c;非常适合像我这样的机器学习初学者。 线性回归分析 线性回归分析用…

【51单片机】02LED流水灯实验

点亮你的LED 一、点亮第一个LED1.GPIO介绍2.P1、P2、P3端口 二、LED实验2.尝试点亮LED3.LED流水灯 一、点亮第一个LED 1.GPIO介绍 这块内容这里可以做简单的了解&#xff0c;与数电知识强相关。后续可以再回过头来学习 GPIO (general purpose input output) 通用输入输出端口…

「Mac畅玩鸿蒙与硬件53」UI互动应用篇30 - 打卡提醒小应用

本篇教程将实现一个打卡提醒小应用&#xff0c;通过用户输入时间进行提醒设置&#xff0c;并展示实时提醒状态&#xff0c;实现提醒设置和取消等功能。 关键词 打卡提醒状态管理定时任务输入校验UI交互 一、功能说明 打卡提醒小应用包含以下功能&#xff1a; 提醒时间输入与…

Python递归(汉诺塔问题)

递归分析 递归&#xff1a;通过自我调用来解决问题的函数 递归通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解。 递归要注意&#xff1a; 1.递归出口 2.当前问题如何变成子问题 利用递归写一个阶乘函数&#xff0c;F(n)&#xff0c;求n的阶乘…

VS2022 C#创建Com组件和调用

生成一个类库项目 这里创建了一个.net 4.8的项目&#xff0c;添加了一个ComAIFaceTest类 如下图&#xff1a; ComAIFaceTest代码如下&#xff1a; [ComVisible(true)][Guid("12345678-ABCD-1234-EF00-0123456789AB")][ClassInterface(ClassInterfaceType.AutoDual)…