languages | products | page_type | name | urlFragment | description | |||
---|---|---|---|---|---|---|---|---|
|
|
sample |
Database migrations with Entity Framework Core sample app |
aspire-efcore-migrations |
A sample of using Entity Framework Core database migrations feature to update a database schema. |
This sample demonstrates how to use Entity Framework Core's migrations feature with Aspire.
The sample has three important projects:
DatabaseMigrations.ApiService
- A web app that uses the database.DatabaseMigrations.MigrationService
- A background worker app that applies migrations when it starts up.DatabaseMigrations.ApiModel
- The EF Core context and entity types. This project is used by both the API and migration service.
DatabaseMigrations.ApiService
and DatabaseMigrations.MigrationService
reference a SQL Server resource. During local development the SQL Server resource is launched in a container.
- How to create migrations in an Aspire solution
- How to apply migrations in an Aspire solution
This sample is written in C# and targets .NET 8.0. It requires the .NET 8.0 SDK or later.
The DatabaseMigrations.MigrationService
project contains the EF Core migrations. The dotnet ef
command-line tool can be used to create new migrations:
-
Update the
Entry
entity in database context inMyDb1Context.cs
. Add aName
property:public class Entry { public Guid Id { get; set; } = Guid.NewGuid(); public string? Name { get; set; } }
-
Open a command prompt in the
DatabaseMigrations.MigrationService
directory and run the EF Core migration tool to create a migration named MyNewMigration.dotnet ef migrations add MyNewMigration
The preceding command:
- Runs EF Core migration command-line tool in the
DatabaseMigrations.MigrationService
directory.dotnet ef
is run in this location because it will be used as the default target project for the new migration and the tool will run the startup code inProgram.cs
to find and configure the context to be used.
- Creates the migration named
MyNewMigration
in theDatabaseMigrations.MigrationService
project.
- Runs EF Core migration command-line tool in the
-
View the new migration files in the
DatabaseMigrations.ApiModel
project.
Note
To remove the unapplied migration you need to run dotnet ef migrations remove --force
. The --force
switch tells the tool to avoid connecting to the database
If using Visual Studio, open the solution file DatabaseMigrations.sln
and launch/debug the DatabaseMigrations.AppHost
project.
If using the .NET CLI, run dotnet run
from the DatabaseContainers.AppHost
directory.
When the app starts up, the DatabaseMigrations.MigrationService
background worker runs migrations on the SQL Server container. The migration service:
- Creates a database in the SQL Server container.
- Creates the database schema.
- Stops itself once the migration is complete.