Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Entity Framework mit MySql und Migrationen schlagen fehl, da die maximale Schlüssellänge 767 Bytes beträgt

Antwort paraphrasiert von Hinzufügen eines benutzerdefinierten Migrationsverlauf-Kontexts ...

EF6 verwendet einen MigrationHistory Tabelle, um Modelländerungen nachzuverfolgen und die Konsistenz zwischen dem Datenbankschema und dem konzeptionellen Schema sicherzustellen. Diese Tabelle funktioniert standardmäßig nicht für MySQL, da der Primärschlüssel zu groß ist . Um diese Situation zu beheben, müssen Sie die Schlüsselgröße für diese Tabelle verkleinern.

Im Wesentlichen ermöglicht Ihnen EF6, die Schlüsselgröße für die MigrationId/ContextKey-Indexspalten mithilfe der Fluent-API wie folgt zu ändern:

modelBuilder.Entity<HistoryRow>().Property(h => h.MigrationId).HasMaxLength(100).IsRequired();
modelBuilder.Entity<HistoryRow>().Property(h => h.ContextKey).HasMaxLength(200).IsRequired();

Abgeschlossen Anleitung hier...