4

ich mehrere Projekte mit Asp.Net-Core 1.0 und Entity Framework-Core 1.1.0EF Migration Nehmen auf nur für einige Web-Projekte zur Verfügung veröffentlicht

Ich habe ersten Migrationsansatz einen Code habe und ich veröffentliche Azure durch Visual Studio 2015.

Die Art und Weise, in der ich Migrationen in Azure Sql Server angewendet habe, war durch Aktivieren eines Kontrollkästchens zum Veröffentlichen: "Entity Framework Migrations - Diese Migration bei Veröffentlichung anwenden", wo ich eine Verbindungszeichenfolge eingegeben.

Ich habe mehrere Pakete aktualisiert, und jetzt sehe ich für eines meiner Projekte diese Option nicht mehr, um Migrationen auf Veröffentlichen anzuwenden. Ich kann sehen, dass es versucht, Daten Kontexte zu entdecken, aber es findet nichts (obwohl es gibt es im selben Projekt ..)

Siehe unten:

  • Projekt, wo ich kann Migrationen anwenden auf Azure bei der Veröffentlichung: apply migrations available

  • Projekt, wo die Option Migrationen auf Azure anzuwenden, wenn die Veröffentlichung ist weg: apply migrations not available

Ich vermute, dass es etwas mit einer Abhängigkeitsversion für das Projekt und nicht mit meiner IDE zu tun hat, weil ich das gleiche Visual Studio (2015 Update 3) für beide Projekte verwende.

Ich konnte keine Informationen darüber finden. Welche Abhängigkeit erlaubt diese Option? Wenn ich herausfinde, welche Version problematisch ist, bleibt die verbleibende Frage, wie man dann beim Publizieren Migrationen anwendet?

Beide Projekte haben die Migrationen im Web-Projekt und beide Projekte verwenden "Microsoft.AspNetCore.Identity.EntityFrameworkCore": "1.1.0"

UPDATE 1: Ich finden verwaltet, was daran beteiligt ist. Es scheint, dass, wenn ich diese Abhängigkeiten verwenden:

"Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final", 
"Microsoft.EntityFrameworkCore.Design": "1.0.0-preview2-final" 

Visual Studio der Lage ist, Datenkontext zu finden und bietet die Möglichkeit, Migrationen Bewerben auf veröffentlichen. Aber wenn ich neuere Versionen dieser Abhängigkeiten verwenden wie:

"Microsoft.EntityFrameworkCore.Tools": "1.1.0-preview4-final", 
"Microsoft.EntityFrameworkCore.Design": "1.1.0" 

Dann die Option Migrationen anzuwenden ist weg und VS kann keinen Datenkontext findet bei der Veröffentlichung.

Ich müsste herausfinden, was der neueste Status mit den Migrationen Sache und Asp.Net Core ist.

+1

Nur aus Neugier: Was ist das Problem mit Aufruf 'dbcontext.Database.MigrateAsync()' beim Anwendungsstart? Wenn Sie es einsetzen, um zu und Sie verwenden Slots Einsatz wäre es den App perform implementieren und es dann einmal ping um sicherzustellen, dass sein aufgewärmt, bevor es mit der Produktion Schlitz – Tseng

+1

Es gibt einige Debatten um diesen austauschen. Persönlich mag ich, dass die Migrationen vor der Bereitstellung der Anwendung durchgeführt werden. Wenn die Migration nicht angewendet werden konnte, gab es kein Problem mit der aktuellen App und DB in der Produktion. Wenn es im Code als Teil des Startup ist, bedeutet dies, dass die App zuerst bereitgestellt werden muss und dann die Migration angewendet wird. Wenn diese Migration nicht angewendet werden kann, wird die App nicht mehr funktionieren und die vorherige Version muss erneut bereitgestellt werden. Aber ich könnte in Erwägung ziehen 'dbcontext.Database.MigrateAsync()', wenn es mit guten Argumente, dies zu tun ist? – iberodev

+0

Nun, deshalb erwähne ich die Bereitstellungs-Slots von Azure: docs.microsoft.com/en-us/azure/app-service-web/web-sites-staged-publishing Siehe https://docs.microsoft.com/en-us/azure/app-service-web/websites-staged-publishing (insbesondere "Swap mit Vorschau (Multi-Phase-Swap)" -Teil). Sie würden die App grundsätzlich im Staging-Slot veröffentlichen. Sie könnten eine Aufwärmphase auslösen (rufen Sie eine URL auf, die IIS dazu zwingt, Ihre Anwendung zu starten) und dann die beiden zu wechseln. Ich denke, Sie können es auch nur ändern, wenn die URL Warmup war erfolgreich, aber jetzt nicht sicher wissen – Tseng

Antwort

2

Ich bin in Visual Studio 2017 nach dem Erstellen eines leeren ASP.NET Core Web API-Projekts und dem Hinzufügen von Migrationen auf ein sehr ähnliches Problem gestoßen (Veröffentlichung kann innerhalb des zu veröffentlichenden Projekts nicht nach Datenkontexten suchen).

Um es funktionieren zu lassen, habe ich die folgenden Zeilen innerhalb der.csproj Datei:

<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="1.0.0" /> 

<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="1.1.1" /> 
Verwandte Themen