How to change the output folder for migrations with asp.net Core?
Solution 1
dotnet ef migrations add Initial --context EsportshubApi.Models.ApplicationDbContext -o YourFolderPath
dotnet ef migrations add
Adds a new migration.
Arguments:
Argument | Description |
---|---|
<NAME> |
The name of the migration. |
Options:
Option | Short | Description |
---|---|---|
--output-dir <PATH> |
-o |
The name of the migration. |
--namespace <NAMESPACE> |
-n |
The namespace to use for the generated classes. Defaults to generated from the output directory. Added in EF Core 5.0. |
Also here are the common options you can use with this command.
Solution 2
For Package Manager Console
run this command:
PM> Add-Migration 001 -OutputDir "Data/Migrations"
My structure is:
.AspCoreProject
-Data
-Migrations
20190721162938_001.cs
MainDbContextModelSnapshot.cs
Update:
For removing last migration use:
PM> Remove-Migration
Note: If the migration is already applied to the database, then you will get this error:
The migration '20190721162938_001' 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.
Then run:
PM> Remove-Migration -Force
If your migration is not the last migration. first, rollback to the migration you need by Update-Database
then delete all migration classes after that migration.
PM> Update-Database -Migration 001
This will revert all migrations after 001
Solution 3
In EF Core 5.0, you are free to move Migration files and changes their namespace manually. New migrations are created as siblings of the last migration. Alternatively, you can specify the directory at generation time as follows:
.Net core CLI
dotnet ef migrations add InitialCreate --output-dir Your/Directory
PowerShell
Add-Migration InitialCreate -OutputDir Your\Directory
Solution 4
You just need to use -o Or --output option with your command,
To do so, you need to explore to your root project folder, eg: C:\project\SampleAPi\ and use this command
dotnet ef migrations add DbInitial --context SampleAPi.Infrastructure.DbContext -o Infrastructure/Migrations
and then
dotnet ef database update
Related videos on Youtube
DenLilleMand
Updated on December 10, 2021Comments
-
DenLilleMand over 2 years
Does anyone know how to change the output directory of the following command?
dotnet ef migrations add Initial --context EsportshubApi.Models.ApplicationDbContext
I tried to add the option:
--content-root-path 'Migrations/Identity'
But that doesn't do anything. There is a
--data-dir
option as well and something else with directory. But none of them is the output for migrations.My problem is that I have 2 DbContexts so I want their migrations to be separated.
-
Levi Fuller about 7 yearsDo you know how to set the folder in C#? I'd prefer not to use an extra argument each time.
-
Levi Fuller about 7 yearsIn the previous EntityFramework version, you were able to set the migrations folder in the
Configuration()
method and thedotnet ef
commands compile the application so it's entirely possible you would be able to set the migration folder using C#. -
Jérôme MEVEL about 7 yearsSorry I forgot about that. It's been a while I didn't touch this
-
Levi Fuller about 7 yearsAlso fun fact, after you set the
--output
directory once e.g../Config/Migrations
, future migrations are automatically created in the folder even without the argument. -
Konrad over 5 years@LeviFuller interesting
-
Seabizkit over 4 yearscould you add the remove command as well
Remove-Migration 001 -OutputDir "Data/Migrations"
not working neither doesRemove-Migration 001"
-
Dživo Jelić about 2 years@LeviFuller nice but it would be nice if we could define that somewhere like dotnet-tools.json or even in csproj