CheckMigrated

Open
#24,866 5 comments 10 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
5/5
Estimated time
Over a week
Newbie friendliness
25/100
Issue type
Feature
Clarity
Needs clarification
Activity status
Stale
Tech stack
csharp
Domain
databases

Research direction

Start by reviewing the proposed EnsureMigrated behavior and the alternative dotnet ef database initialize command. Done means clearly deciding the supported migration checks and providing guidance that helps users create and update a database while following migration best practices.

Written by the indexing model from the issue text.

Description

area-migrations area-tools

One of the dilemmas of "getting started" applications and examples is that creating the database in code when the application starts is by far the easiest way to get up and running with a database, but this is considered an anti-pattern for most production applications. So, even though its a bit harder, we want people to start with something like Migrations which allows us to show best practice from the start. However, using Migrations requires running some commands at the command line.

The idea behind EnsureMigrated is to have a single, simple line of code that can safely be run when starting an application and which will check if Migrations have been created and applied to the database. If no migrations are found in the project, then EnsureMigrated will stop and indicate that the user should run dotnet ef migrations add. For example:

A database must be created for this application. Enter the following commands to create a database using EF Core Migrations:
dotnet ef migrations add InitialMigration
dotnet ef database update
See https://aka.ms/databasemigrations for more information.

We can potentially also detect other conditions such as a migration exists, but update database has not been called. We may also want to check if the dotnet-ef tool is installed and give instructions for that.

To make this easier, we could create a new command that will add a migration and update the database in one go. For example:

A database must be created for this application. Enter the following commands to create a database using EF Core Migrations:
dotnet ef database initialize
See https://aka.ms/databasemigrations for more information.

The end-result is guidance towards best practice with minimal input from the user. It's also not magic--that is, the user knows that they are creating a database.

Thoughts @davidfowl @bricelam @JeremyLikness @halter73 @LadyNaggaga @glennc

Dominant language
C#
Stars
14.8k
Forks
3.4k
Avg merge
2d 5h
Merged PRs (30d)
134

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from dotnet/efcore

All issues in dotnet/efcore

Similar issues

More C# issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.