有谁知道如何更改以下命令的输出目录?
dotnet ef migrations add Initial --context EsportshubApi.Models.ApplicationDbContext
我尝试添加选项:
--content-root-path 'Migrations/Identity'
但这没有做任何事情。还有一个
--data-dir
选项和其他带有目录的选项。但它们都不是迁移的输出。
我的问题是我有 2 个 DbContext,所以我希望将它们的迁移分开。
dotnet ef migrations add Initial --context EsportshubApi.Models.ApplicationDbContext -o YourFolderPath
dotnet ef migrations add
添加新的迁移。
参数:
争论 | 说明 |
---|---|
|
迁移的名称。 |
选项:
选项 | 短 | 说明 |
---|---|---|
|
|
用于输出文件的目录。路径是相对于目标项目目录的。默认为“迁移”。 |
|
|
用于生成类的命名空间。默认从输出目录生成。在 EF Core 5.0 中添加。 |
这里还有常用选项你可以用这个命令。
对于
Package Manager Console
运行这个命令:
PM> Add-Migration 001 -OutputDir "Data/Migrations"
我的结构是:
.AspCoreProject
-Data
-Migrations
20190721162938_001.cs
MainDbContextModelSnapshot.cs
更新:
删除上次迁移使用:
PM> Remove-Migration
注意:如果迁移已经应用到数据库,那么你会得到这个错误:
迁移“20190721162938_001”已经应用到数据库。还原它并重试。如果迁移已应用于其他数据库,请考虑使用新迁移恢复其更改。
然后运行:
PM> Remove-Migration -Force
如果您的迁移不是最后一次迁移。首先,通过
Update-Database
回滚到您需要的迁移,然后在该迁移之后删除所有迁移类。
PM> Update-Database -Migration 001
这将在
001
之后恢复所有迁移
在 EF Core 5.0 中,您可以自由移动迁移文件并手动更改其命名空间。新迁移被创建为上一个迁移的兄弟。或者,您可以在生成时指定目录,如下所示:
.Net 核心 CLI
dotnet ef migrations add InitialCreate --output-dir Your/Directory
包管理器控制台
Add-Migration InitialCreate -OutputDir Your\Directory
您只需要在命令中使用 -o 或 --output 选项,
为此,您需要浏览到您的根项目文件夹,例如:C:\project\SampleAPi\ 并使用这个命令
dotnet ef migrations add DbInitial --context SampleAPi.Infrastructure.DbContext -o Infrastructure/Migrations
然后
dotnet ef database update