Sto creando il mio quarto script sulle migrazioni con EF Core (2.0.0). Lì voglio aggiungere alcuni ruoli al database.
Il problema è che non sono davvero sicuro di come farlo. Attualmente ho questo:
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...
//}
}
Ma la creazione di RoleManager
questo modo mi dà il seguente errore:
Non viene fornito alcun argomento che corrisponda al parametro formale richiesto 'roleValidators' di 'RoleManager.RoleManager (IRoleStore, IEnumerable>, ILookupNormalizer, IdentityErrorDescriber, ILogger>)'
Non sono sicuro di come risolvere questo problema. Non sono riuscito a trovare informazioni su come farlo correttamente in .NET Core usando le migrazioni.
Sto affrontando due problemi in questo codice:
RoleManager
questo modo non funziona e deve essere risolta. Come posso risolvere questi problemi?
Il metodo Up
è fondamentalmente un file di istruzioni che indica al migratore del database EF come generare uno script di aggiornamento del database. Il metodo viene eseguito quando viene generato lo script. Fare qualsiasi manipolazione dei dati è assolutamente fuori posto. Nucleo EF non supporta semina ancora, quindi è necessario aggiungere i ruoli mancanti all'avvio dell'applicazione, ad esempio da qualcosa come questo .