2016-09-21 2 views
1

Ich habe eine MVC 5-Anwendung, die ich zuerst für die Verwendung von Mysql konfiguriert habe, aber jetzt möchte es SQL Server verwenden.EF-Code zuerst Mysql zu SQL Server

Meine App verwendet Code zuerst und Migrationen, um die Datenbank zu generieren.

Nachdem ich alles erforderliche Konfiguration geändert Ich habe versucht, eine Update-Datenbank aus der Paket-Management-Konsole zu laufen, aber ich erhalte immer diese Fehlermeldung:

System.Data.Entity.Core.MetadataException: Schema specified is not valid. Errors: (0,0) : error 0152: No Entity Framework provider found for the ADO.NET provider with invariant name 'MySql.Data.MySqlClient'. Make sure the provider is registered in the 'entityFramework' section of the application config file. See http://go.microsoft.com/fwlink/?LinkId=260882 for more information.

Dieser Fehler tritt auf, nachdem die Datenbank erstellt wird. Es erscheint auch, wenn ich die Anwendung starte, da es in diesem Moment prüft, ob eine Migration zu tun ist.

Irgendwie versucht es immer noch MySQL zu verwenden, obwohl alle Anbieter auf SQL Server verweisen.

Jede Hilfe wäre mehr als willkommen.

Vielen Dank im Voraus

+1

Offensichtlich nicht alle Anbieter zeigen auf SQLServer – RiggsFolly

+0

Sehr offensichtlich in der Tat, so viel, dass ich versuchte zu überprüfen, wo das sein könnte und nicht finden konnte. Selbst wenn ich eine Volltextsuche für alle Lösungsdateien durchführe, finde ich keine Spur des Wortes: "Mysql" Hier ist meine einzige Konfigurationsdatei: http://pastebin.com/FVf31aJ9 Wenn Sie wo das Falsche finden Anbieter ist eingestellt bitte lass es mich wissen :) – Carlos

Antwort

1

Sie müssen die unten genannten Schritte folgen oben Problem zu überwinden.

Schritt 1: Verwenden NuGet package-remove und install die relevante packages.This ist sehr wichtig.

Wenn es nach dem obigen Schritt nicht funktioniert, dann müssen Sie die unten genannten Schritte befolgen.

Schritt 1: Erhalten Sie eine Sicherungskopie Ihrer project und SQL db und an einem sicheren Ort aufzubewahren.

Schritt 2: Danach müssen Sie delete alle Ihre data migration scripts auf Ihrer App.

Schritt 3: Löschen Sie auch die SQL db.

Schritt 4: Erstellen Sie alle Ihre Migration scripts again und danach diese gegen die SQL server.

Hinweis: Sie müssen diese Schritte tun b'cos es EF die provider details auf dem db migration scripts halten scheint.

+0

Ich werde das versuchen und zu dir zurückkommen. Ich habe noch nicht versucht, die Migrationen wieder aufzubauen. – Carlos

+0

Ich habe das gemacht und es funktioniert gut. Vielen Dank dafür! Ich bin genervt von der Tatsache, dass ich die Geschichte der Migrationen verliere, weil natürlich, wenn ich die Migrationen neu erstellt es nur eine einzige mit dem aktuellen Zustand der Datenbank erstellt, während auf der MySQL-Seite ich 3 verschiedene hatte Migrationsklassen. Ich habe versucht, sowohl die neue einzelne Migration und die anderen drei mysql-Migrationsklassen zu vergleichen, und die einzige Änderung, die wahrscheinlich das Problem verursacht, ist die hat in der Resx-Datei im Zielfeld gespeichert. Ich denke, da ist der Hinweis auf den MySql-Provider. Gibt es einen Weg ... – Carlos

+0

... nur das Zielfeld zu regenerieren, während die alten Migrationsklassen beibehalten werden? – Carlos