Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Seed Method in MVC Entity Framework

What is the main puspose of seed method in the migration folder of my application? In my Configuration.cs file I got this in my seed method -

protected override void Seed(TestApplication.DataBaseContext.AppDBContext context)
        {
            //  This method will be called after migrating to the latest version.

            //  You can use the DbSet<T>.AddOrUpdate() helper extension method 
            //  to avoid creating duplicate seed data. E.g.
            //
            //    context.People.AddOrUpdate(
            //      p => p.FullName,
            //      new Person { FullName = "Andrew Peters" },
            //      new Person { FullName = "Brice Lambson" },
            //      new Person { FullName = "Rowan Miller" }
            //    );
            //
            SeedMemebership();
        }

        private void SeedMemebership()
        {
            if (!WebSecurity.Initialized)
            {
                WebSecurity.InitializeDatabaseConnection("DefaultConnection",
                    "UserProfile", "UserId", "UserName", autoCreateTables: true);
            }
            var roles = (SimpleRoleProvider)Roles.Provider;
            var membership = (SimpleMembershipProvider)Membership.Provider;

            if (!roles.RoleExists("Administrator"))
            {
                roles.CreateRole("Administrator");
            }
            if (membership.GetUser("admin", false) == null)
            {
                membership.CreateUserAndAccount("admin", "password");
            }
            if (!roles.GetRolesForUser("admin").Contains("Administrator"))
            {
                roles.AddUsersToRoles(new[] { "admin" }, new[] { "Administrator" });
            }
        }

As anyone can make out it calls the SeedMembership() which creates a role and a user if it does not exist. When is this seed() called and what does it do? I tried putting a break point on this method but it never really got hit. I tried searching other SO questions for further explainations but it dint help.

Thank You.

like image 931
Aritra B Avatar asked Feb 20 '14 06:02

Aritra B


1 Answers

This seed() method in configuration.cs is called when you run update-database in the Package Manager Console.

It's also called at application startup if you change Entity Framework to use the MigrateDatabaseToLatestVersion database initializer.

like image 66
Anthony Chu Avatar answered Nov 14 '22 22:11

Anthony Chu