2014-02-20 19 views
7

Was ist die Hauptursache von seed method im Migrationsordner meiner Anwendung? In meiner Configuration.cs Datei habe ich in meiner Samen Methode -Seed-Methode in MVC Entity Framework

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" }); 
      } 
     } 

Wie jeder ausmachen kann es die SeedMembership() nennt, die eine Rolle und einen Benutzer erstellt, wenn es nicht vorhanden ist. Wann heißt das seed() und was macht es? Ich habe versucht, mit dieser Methode einen Wendepunkt zu setzen, aber es wurde nie wirklich getroffen. Ich habe versucht, andere SO Fragen für weitere Erklärungen zu suchen, aber es hilft nicht.

Vielen Dank.

+1

Dies hilft? http://StackOverflow.com/Questions/20245527/entity-framework-seed-method-is-not-being-called – HOKBONG

Antwort

4

Diese seed() Methode in configuration.cs aufgerufen wird, wenn Sie update-database im Paket-Manager-Konsole ausgeführt werden.

Sie wird auch beim Start der Anwendung aufgerufen, wenn Sie Entity Framework so ändern, dass MigrateDatabaseToLatestVersion database initializer verwendet wird.

+0

Also warum schlägt es nicht den Unterbrechungspunkt, wenn Sie 'Update -database' Befehl von PMC ausführen? –

+1

Es wird nicht mit dem angehängten Debugger ausgeführt. Versuchen Sie die Lösung in dieser Frage ... http://stackoverflow.com/questions/16718510/debugging-package-manager-console-update-database-seed-method –

+0

Danke für den Link. –

1

Das Migrationsfeature des Entity Framework enthält eine Seed-Methode, mit der Sie die Datenbank mit den ursprünglichen statischen Daten füllen können, die eine Anwendung benötigt.

more information

+0

Danke für den Blog. –

Verwandte Themen