When is the Seed method called in a EF code first migrations scenario?

entity-framework entity-framework-6

Question

I'm new in a project and there is this class for the seed data:

 internal sealed class Configuration : DbMigrationsConfiguration<DAL.Context>
    {
        public Configuration()
        {
            AutomaticMigrationsEnabled = true;
        }

And this code to start the seed:

protected override void Seed(Context context)
    {
        try
        {

My question is: when is the Seed method called? Only when a user does update-database and the user doesn't have the database (basicly a new user), or also when the user with an existing database calls an update-database?

1
20
6/10/2014 1:19:20 PM

Accepted Answer

Seed method is used to initialized the database tables with some starting data. Whenever you run the migration and update the database it will run the seed method. Mostly it is used during the testing phase where you often need to recreate the database and populate database tables with sample data. Please go through this link http://blog.oneunicorn.com/2013/05/28/database-initializer-and-migrations-seed-methods/ for more explaination on code first.

14
6/10/2014 1:36:24 PM

Popular Answer

When it comes to the migrations Seed() method, coming from DbMigrationsConfiguration class, it's called every time when the Update-Database command is executed. Also when user calls it having existing database.

There is yet another Seed() method - it is a database initializer. It's invoked when database is creating and doesn't handle existing data (while seed from DbMigrationsConfiguration handles them, checking if specified entities exist).

Good to look up to One Unicorn blog for more information.



Related Questions





Related

Licensed under: CC-BY-SA with attribution
Not affiliated with Stack Overflow
Licensed under: CC-BY-SA with attribution
Not affiliated with Stack Overflow