Seed Method in MVC Entity Framework

13,330

Solution 1

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.

Solution 2

The migrations feature of the Entity Framework includes a Seed method where you can populate the database with the initial static data an application needs.

more information

Share:
13,330
Aritra B
Author by

Aritra B

Day dreamer FC Barcelona fanatic Electrician turned Application Developer (Mostly Microsoft Technologies)

Updated on June 05, 2022

Comments

  • Aritra B
    Aritra B almost 2 years

    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.