2016-11-24 5 views
1

J'ai créé une application autonome avec dotnet:migrations Run dans les applications autonomes

dotnet publish -c release 

Le package de déploiement contient l'exécution de base .net lui-même - donc si quelqu'un veut utiliser l'application - n'a pas besoin pour installer .net runtimes séparément. Mais ma question est la suivante: est-il possible d'attacher dotnet.exe au paquet de déploiement?

F.e. - mon application web expectes base de données migrée:

dotnet ef database update 

Cette commande ne peut être exécuté à partir de l'application autonome (pas d'accès direct à dotnet.exe).

Quels sont les scénarios dans ce cas? Comment dois-je le gérer?

+0

Jetez un coup d'oeil sur ce message SO: http://stackoverflow.com/questions/35324156/automatically-execute-migrations-when-publishing-asp-net-core-app – Klinger

+3

Appelez juste 'context.Database.MigrateAsync () 'dans le code au démarrage – Tseng

Répondre

0

La solution est d'ajouter sur votre Startup.cs comme ça

public void Configure(
    IApplicationBuilder app, 
    // ... various other parameters that you may have and below add the context that you want to run Migrations 
    YourDbContext db1) 
{ 
{ 
    // run the migrations before other code 
    db1.Database.Migrate(); 
    // ... 
} 

PS. c'est un peu bizarre, mais vous l'ajoutez sur la signature de la méthode Configure en tant que paramètre supplémentaire et cela fonctionne (je suppose qu'il instancie automatiquement l'objet dbContext et appelle la méthode). Cela a fonctionné pour moi.