MySQL 5.5 + .NET Connector + Entity Framework + Migrationen = FormatException

7

Ich habe versucht, eine Lösung für mein Problem zu finden, aber meine bisherigen Bemühungen waren umsonst. : - (

Ich habe ein Webprojekt mit Visual Studio 2010, .NET Framework 4, C #, Entity Framework 5.0, MySQL 5.5 und dem entsprechenden .NET Connector (Version 6.5.4) erstellt. Ich verwende den ersten Code-Ansatz für die Entitäten und das O / R-Mapping.

Das Problem, mit dem ich konfrontiert bin, ist, dass ich scheinbar eine einfache Migration nicht ausführen kann. Hier sind meine Entity-Klassen:

%Vor%

Der von Add-Migration Acesso generierte Code (nur Up() Methode):

%Vor%

Zuerst musste ich die Eigenschaften namens Versao (Version) von

ändern %Vor%

bis

%Vor%

, weil vor der Änderung ein Fehler aufgetreten ist (etwas über die Typzeilenversion wurde nicht mit einem Namespace oder Alias ​​qualifiziert). Nach dieser Änderung konnte ich die Migration generieren, aber der Befehl Update-Database ist mit dem folgenden Fehler in der Konsole fehlgeschlagen:

%Vor%

(Die Eingabezeichenfolge war nicht in einem korrekten Format.)

Ich habe versucht, die MySQL-Versionen 5.5 und 5.1 zu verwenden; die Versionen 6.5.4, 6.4.5 und 6.3.9 des Connectors konnten das Problem nicht lösen.

Ist es möglich, MySQL, Entity Framework und Code First Approach zu verwenden? Wenn nicht, was sind die Konsequenzen der Umstellung auf ODBC-Connector anstelle von .NET?

Vielen Dank im Voraus und Entschuldigung für die große Frage.

    
matheus.emm 12.09.2012, 01:38
quelle

6 Antworten

3

Sie sollten auch .NET Connector 6.6 ausprobieren, da dies die erste Version ist, die Support für EF 4.3 (die erste Version mit Migrationen). Wenn es nicht hilft, sollten Sie dotConnect for MySql (mindestens eine Testversion) ausprobieren, um festzustellen, ob das Problem vorliegt. NET Connector oder in EF. ODBC-Connector funktioniert nicht mit EF.

    
Ladislav Mrnka 12.09.2012, 08:41
quelle
20

Ich habe erstellt a fork von MySQL Data Connector v.6.6.4, das die neueste Version von Entity Framework (v.5) unterstützt.

Um es zu verwenden, können Sie einfach Laden Sie die Binärdateien herunter , die Ersatz-Baugruppen für MySql.Data und MySql.Data.Entity sind. Stellen Sie außerdem sicher, dass Ihr Projekt von EF5 und nicht von 4.3 abhängig ist.

Nachdem Sie Enable-Migrations das erste Mal geändert haben, ändern Sie den Konstruktor Configuration class so, dass er folgende Zeile enthält:

%Vor%

An diesem Punkt sollten Sie Add-Migration und Update-Database ohne Probleme ausführen können.

Die Schlüsseländerungen meiner Gabel sind wie folgt:

  • Die Binärdateien hängen von EF5 und nicht von EF4.3 ab.

  • EF5 fügt dbo. allen Ihren Tabellennamen voran, die MySQL nicht verarbeiten kann. Daher hackt meine Version den SQL-Migrationsgenerator, um das dbo. -Präfix von den Tabellennamen zu entfernen. Dies setzt voraus, dass Sie das Schema nicht über das TableAttribute für die Entitätsklassen außer Kraft setzen.

  • Es entfernt die Verwendung von CreatedOn , wie Jimi in seiner Antwort erwähnt hat.

Kirk Woll 19.11.2012 23:50
quelle
2

Es gibt einige nützliche Anleitungen zur Verwendung von EF + Connector / Net + EFMigrations. Ich denke, es würde helfen, wenn Sie sie überprüfen. Die neueste Version von Connector / Net (6.6.4) hängt von EF 4.3.1 ab. Die Connector / Net-Version, die EF 5 unterstützt, befindet sich noch in der Codestufe.

HowTo mit EF Migrations und Connector / Net

Upgrade auf Code-basierte Migrationen EF 4.3 .1 mit Connector / Net 6.6

Hoffe, das hilft!

    
gab 14.01.2013 20:39
quelle
1

Ich glaube nicht, dass Code Migration von .Net Connector 6.6 unterstützt wird. Ich habe es bereits versucht, den Fehler, den Sie bekommen, wenn Sie 'Update-Datenbank' ausführen Kein MigrationSqlGenerator für Provider 'MySql.Data.MySqlClient' gefunden. Verwenden Sie die SetSqlGenerator-Methode in der Zielmigrationskonfigurationsklasse, um weitere SQL-Generatoren zu registrieren. dotConnect für MySql funktioniert möglicherweise, da sie sagen, dass sie die Migrationsunterstützung hinzugefügt haben

    
Arunav 13.09.2012 17:25
quelle
0

Die Sache mit EF CTP5 (a.k.a Version 4.4.0) ist, dass die CreatedOn-Methode veraltet ist (die zum Erstellen der zugehörigen Tabelle in der Datenbank verwendet wurde) und Connector / Net 6.6 versucht, diese Tabelle zu migrieren, die eine Ausnahme verursacht.

    
Jimi 01.11.2012 11:12
quelle
0

Ich habe unten erwähnten Fehler erhalten

Kein MigrationSqlGenerator für Provider 'MySql.Data.MySqlClient' gefunden. Verwenden Sie die SetSqlGenerator-Methode in der Zielmigrationskonfigurationsklasse, um weitere SQL-Generatoren zu registrieren.

und wurde mit dieser Anweisung behoben

%Vor%

T muss unter Konfigurationskonstruktor festgelegt werden.

    
Rahul Sonone 15.02.2018 12:44
quelle