wake-up-neo.com

aktualisieren Sie die Datenbank von der Paket-Manager-Konsole in der ersten Umgebung

Code erste Umgebung

Ich versuche, die Datenbank von der Paket-Manager-Konsole zu aktualisieren. Wenn sich meine Domänenklasse ändert, muss ich die Datenbank löschen und erstellen. Statt die Datenbank zu löschen, kann ich die Datenbank aktualisieren. 

Ich habe bereits versucht, einige Blogs in Google zu lesen. 

befehle

PM> Install-Package EntityFramework
  1. Mit diesem Befehl installiere ich das Entity Framework erfolgreich.

     PM> Enable-Migrations
    
  2. Mit diesem Befehl wurde die Migrationsdatei in meinem Projekt erstellt.

     PM> Update-Database
    
  3. Mit diesem Befehl kann ich die Tabelle aktualisieren, aber ich habe ein Problem hier .

Error

Geben Sie das Flag '-Verbose' an, um die auf die Zieldatenbank angewendeten SQL-Anweisungen anzuzeigen. System.Data.SqlClient.SqlException (0x80131904): Beim Herstellen einer Verbindung zu SQL Server ist ein netzwerkbezogener oder instanzspezifischer Fehler aufgetreten. Der Server wurde nicht gefunden oder war nicht erreichbar. Stellen Sie sicher, dass der Instanzname korrekt ist und dass SQL Server für das Zulassen von Remoteverbindungen konfiguriert ist.

Zweifel ist hier

Manchmal wird es aktualisiert, wenn sich nur ein Feld inPOCOClass ändert. Zum Beispiel habe ich die mehr Anzahl von Domain-Klassen aktualisiert. Wie kann ich die Datenbank von der Package Manager Console aus aktualisieren. Irgendeine Idee ?

18
vinodh

Sie können die Verbindungszeichenfolge über den Parameter ConnectionString angeben:

Update-Database -ConnectionString "data source=server_name;initial catalog=db_name;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework" -ConnectionProviderName "System.Data.SqlClient" -Verbose

Außerdem müssen Sie diesen Parameter mit demselben Wert für den Befehl Add-Migration verwenden:

Add-Migration Version_Name -ConnectionString "data source=server_name;initial catalog=db_name;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework" -ConnectionProviderName "System.Data.SqlClient" -Verbose
17
Andrey Molotkov

Ich benutzte 

Enable-Migrations -EnableAutomaticMigrations -Force

dann

Update-Database

Und dies hat meine Änderungen (zusätzliche Spalten) migriert, während meine Testdaten erhalten wurden. Ich denke, das ist die faulste Option beim Prototyping.

4
toddmo

Sieht aus, als hätten Sie mehrere Probleme. Wenn Sie die Datenbank nicht löschen und erneut erstellen möchten, wird dies vom Datenbankinitialisierer bestimmt. Wenn Sie Migrationen verwenden möchten, ändern Sie sie in MigrateDatabaseToLatestVersion. http://www.codeguru.com/csharp/article.php/c19999/Unterstanding-Database-Initializers-in-Entity-Framework-Code-First.htm

Zweitens spielt es keine Rolle, wie viele Felder Sie ändern, sie werden in einer einzigen Migration basierend auf den Änderungen der letzten Migration zusammengefasst.

Drittens scheint es, wie die anderen darauf hingewiesen haben, ein Problem mit der Verbindungszeichenfolge zu haben. Während Sie das Add-Migration und Update-Migration hinzufügen können, würde ich es wahrscheinlich in der Anwendung beheben. Ich habe meinen im Konstruktor meines Kontexts gesetzt, der auf meine Konfigurationsdatei (web.config für ASP.NET) verweist.

public class ApplicationDbContext : DbContext
{
    public ApplicationDbContext()
        : base("MyConnection", throwIfV1Schema: false)
    {
        Database.SetInitializer<ApplicationDbContext>(new MigrateDatabaseToLatestVersion<ApplicationDbContext, MyObjextContextMigration>());
    }
    ...
2
Steve Greene

Wo soll die Verbindungszeichenfolge abgelegt werden?

Sie müssen es nicht bei jedem Befehl in der Package Manager-Konsole angeben. Sie können es in appsettings.json in dem Projekt ablegen, in dem sich Ihre DbContext-Klasse (gelesen "von DbContext abgeleitete Klasse") befindet.

{
  "ConnectionStrings": {
    "MyConnectionString": "Server=yourServer;Port=5432;Database=yourDatabase;User Id=yourDatabaseUsername;Password=yourDatabasePassword;"
  }
}

Es wird für Migrationen verwendet.

Wichtig: Wenn Ihre Lösung mehrere Projekte enthält, wählen Sie muss das Projekt in der Dropdown-Liste "Standardprojekt" (in der Package Manager-Konsole) aus und Sie muss setzen die Projekt als Startprojekt (im Projektmappen-Explorer).

Andernfalls wird möglicherweise die falsche Datei appsettings.json mit einer falschen/anderen Verbindungszeichenfolge verwendet.

Dies war meine Erfahrung mit EF Core 2.1 und gilt wahrscheinlich für die anderen Versionen von EF.

1
RWC

Sie müssen SSDT Aktualisieren. Gehen Sie zu Tools> Erweiterung und Updates> Updates> SQL Server-Datentools

0
aya mourad