2017-09-15 2 views
1

Ich erstelle mein 4. Migrations-Skript mit EF Core (2.0.0). Dort möchte ich der Datenbank ein paar Rollen hinzufügen.Erstellen Sie eine Rolle mit Entity Framework-Kernmigrationen

Das Problem ist, dass ich nicht wirklich sicher bin, wie man das macht. Zur Zeit habe ich dies:

protected override void Up(MigrationBuilder migrationBuilder) 
{ 
    // todo: Pass connection string somehow..? 
    var opt = new DbContextOptions<ApplicationContext>(); 
    var roleManager = new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(new ApplicationContext(opt))); 

    //if (!roleManager.RoleExists("ROLE NAME")) 
    //{ 
     // todo: create the role... 
    //} 
} 

Aber die RoleManager wie das Erstellen gibt mir die folgende Fehlermeldung:

There is no argument given that corresponds to the required formal parameter 'roleValidators' of 'RoleManager.RoleManager(IRoleStore, IEnumerable>, ILookupNormalizer, IdentityErrorDescriber, ILogger>)'

Ich bin nicht sicher, wie dieses Problem zu lösen. Ich konnte keine Informationen darüber finden, wie man dies in .NET Core mit Migrationen richtig macht.

Ich bin vor zwei Ausgaben in diesem Code:

  • Ich versuche irgendwie eine Instanz des DbContext zu erstellen. Kann ich den DbContext nicht aus meinem Migrationscode herausholen?
  • Instantiieren der RoleManager wie folgt funktioniert nicht und muss gelöst werden.

Wie kann ich diese Probleme lösen?

Antwort

0

Die Methode Up ist im Grunde eine Anweisungsdatei, die dem Datenbankmigrator von EF mitteilt, wie ein Skript für die Datenbankaktualisierung generiert wird. Die Methode wird ausgeführt, wenn das Skript generiert wird. Jede Datenmanipulation ist absolut fehl am Platz. EF Core unterstützt das Seeding noch nicht, daher müssen Sie beim Start der Anwendung fehlende Rollen hinzufügen, z. B. durch etwas wie this.

Verwandte Themen