Migrations in ASP Dot Net Core

In ASP.NET Core MVC, “migration” refers to the process of updating your database schema to reflect changes in your Entity Framework Core (EF Core) data model. This involves creating, applying, and managing changes to the database schema that match the changes made in your application’s data model classes. Here’s a step-by-step guide on how to work with migrations in ASP.NET Core MVC:

1. Set Up Your Project for Entity Framework Core

First, ensure you have the necessary packages installed. Typically, you need:

  • Microsoft.EntityFrameworkCore
  • Microsoft.EntityFrameworkCore.Design
  • Microsoft.EntityFrameworkCore.SqlServer (or another database provider)

You can install these packages via NuGet Package Manager or using the Package Manager Console:

Install-Package Microsoft.EntityFrameworkCore
Install-Package Microsoft.EntityFrameworkCore.Design
Install-Package Microsoft.EntityFrameworkCore.SqlServer

2. Create Your DbContext and Models

Define your data models and DbContext. For example:

public class ApplicationDbContext : DbContext
{
    public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
        : base(options)
    {
    }

    public DbSet<MyModel> MyModels { get; set; }
}

public class MyModel
{
    public int Id { get; set; }
    public string Name { get; set; }
}

3. Add a Connection String

Configure your connection string in the appsettings.json file:

{
  "ConnectionStrings": {
"DefaultConnection": "Server = xyz.com; Database = xyzDB; User= xyzUser; Password = xyzPass; TrustServerCertificate=True;", // live server
  }
}

Configure the DbContext in Startup.cs (or Program.cs in newer ASP.NET Core versions):

public void ConfigureServices(IServiceCollection services)
{
    services.AddDbContext<ApplicationDbContext>(options =>
        options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
}

4. Create a Migration

Use the Entity Framework Core CLI tools to create a migration. Open a terminal or Package Manager Console and run:

dotnet ef migrations add InitialCreate

or, using the Package Manager Console in Visual Studio:

Add-Migration InitialCreate

This command generates a new migration file in the Migrations folder, containing code to create or update the database schema to match your data models.

If you have more than one db_context then you need modify your console command for create migration. Suppose you have two db_context, one is “db_context_one” another “db_context_two”. now the console command will be

Add-Migration InitialCreate -context db_context_one
Add-Migration InitialCreate -context db_context_two

5. Apply the Migration to the Database

To apply the migration and update the database schema, run:

dotnet ef database update

or, using the Package Manager Console:

Update-Database

This command applies the pending migrations to the database, creating or modifying tables and columns as necessary.

If you have more than one db_context then you need modify your console command for update database. Suppose you have two db_context, one is “db_context_one” another “db_context_two”. now the console command will be

Update-Database -context db_context_one
Update-Database -context db_context_two

6. Manage Subsequent Migrations

When you make changes to your data models, such as adding new properties or modifying existing ones, you’ll need to create new migrations to reflect these changes:

dotnet ef migrations add AddNewColumn

And apply the migration to update the database:

dotnet ef database update

7. Removing a Migration

If you’ve added a migration but haven’t yet applied it to the database, you can remove it:

dotnet ef migrations remove

8. Handling Migration Conflicts

If multiple team members are working on the same project and creating migrations simultaneously, you may encounter conflicts. In such cases, resolve the conflicts by manually editing the migration files or by merging them.

Additional Tips

  • Migration History: EF Core keeps track of applied migrations in a special table called __EFMigrationsHistory. You can check this table to see which migrations have been applied.
  • Migration Scripts: You can generate SQL scripts for migrations if needed using dotnet ef migrations script.
  • Seeding Data: You can also use migrations to seed initial data into your database by overriding the OnModelCreating method in your DbContext.

By following these steps, you’ll be able to effectively manage and apply migrations in your ASP.NET Core MVC application, keeping your database schema in sync with your data models.


Video Link: https://www.youtube.com/watch?v=Z59qG7EOubg

279 thoughts on “Migrations in ASP Dot Net Core

Leave a Reply

Your email address will not be published. Required fields are marked *