目录
一、创建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"