C# Q & A


How to seed data into the database with Entity Framework Core?

Seeding data into a database with Entity Framework Core is a straightforward process that ensures your database starts with initial or default data. To achieve this, follow these steps:


  1. DbContext Configuration: Begin by defining your database context class that inherits from `DbContext`. Inside this class, you will override the `OnModelCreating` method, which is where you’ll configure your database model and define seed data.


  1. Model Configuration: Within the `OnModelCreating` method, configure your database model using Entity Framework Core’s Fluent API or Data Annotations. Define entities, their properties, relationships, and any other database-specific settings.


  1. Seed Data Definition: To seed data, use the `HasData` method on the entity configurations inside the `OnModelCreating` method. This method takes an array or collection of objects representing the initial data you want to insert into the corresponding database table. Ensure that the data you provide matches the structure of your entity.


  1. Migration and Update: Create a database migration using Entity Framework Core’s migration tools. This migration captures the changes needed to apply your model configuration and seed data to the database. Run the migration to update the database schema and insert the seed data.


  1. Database Initialization: During database initialization, Entity Framework Core checks for pending migrations. If there are any, it applies them, which includes executing the code to insert the seed data into the database.


  1. Use Cases: Seeding data is useful when you want to ensure specific records exist in the database from the beginning. For example, you can seed default user roles, categories, or settings. This ensures your application runs smoothly without requiring manual data entry.


  1. Maintenance: To update or extend seed data, create new migrations to modify existing data or add new records. Entity Framework Core’s migration system allows you to evolve your database schema and seed data as your application evolves.


Seeding data with Entity Framework Core is a vital practice for maintaining data consistency and providing a seamless experience for your application users. It allows you to start with a well-defined database state, ensuring that your application has the necessary data from the moment it’s deployed or when a new database is created.


Previously at
Flag Argentina
time icon
Experienced Backend Developer with 6 years of experience in C#. Proficient in C#, .NET, and Java.Proficient in REST web services and web app development.