Ok, um Ihre Frage tatsächlich zu beantworten. Ja Sie können nur den Datentyp ändern und Migrationen sollten sich darum kümmern.
Auf der Grundlage Ihrer Kommentare haben Sie jedoch Probleme beim Anwenden dieser Migration. Dies negiert das obige nicht, aber ich werde versuchen, ein wenig Rätselraten zu nutzen.
Wenn Sie Sql Azure verwenden, müssen Sie Clustered-Indizes für alle Tabellen haben. EF6 sollte Clustered-Indizes sogar für Zeichenfolgenschlüssel erstellen. Es gibt jedoch einen Fehler in Alpha 3, bei dem kein gruppierter Schlüssel in der Migrationstabelle erstellt wird.
http://entityframework.codeplex.com/discussions/435723
den Link oben für eine Beschreibung und eine Abhilfe.
Wenn Sie immer noch Schwierigkeiten haben, können Sie den folgenden Befehl aus dem Paket-Konsole ausführen:
Update-Database -Script
Dieses ein SQL-Skript anstatt zu versuchen, direkt zu aktualisieren, produzieren. Sie können sich das ansehen und prüfen, ob für die Create Table-Anweisungen kein Clustered-Index vorhanden ist.
Wenn aus irgendeinem Grund nicht. Sie können die CreateTable-Anweisung Ihrer Migration explizit ändern, um den Primärschlüssel zu gruppieren.
CreateTable("MyTable",
c => new {
Id = c.String(nullable: false, maxLength: 128)
})
.PrimaryKey(t => t.Id, null, true);
Auch erwähnenswert: Guids machen schrecklichen Clustered-Indizes. Wenn Sie GUID-Schlüssel verwenden und über die Option verfügen, clustern Sie sie nicht und verwenden Sie stattdessen einen zweiten Clustered-Index.
Sieht aus, als hättest du eine Idee von etwas, was du tun könntest. Hast du es versucht? Die Antwort sollte "Ja" lauten. – JamesT
@JTolley Nein, weil ich zu 99% sicher war, dass die Antwort "nein" sein sollte. Ich hatte einige schlechte Erfahrungen mit älteren EF Versionen. Wie auch immer, nachdem ich Ihren Kommentar gelesen habe, habe ich versucht, ihn von int auf long und string zu ändern, und beide Male habe ich diesen Fehler erhalten: 'Tabellen ohne Clustered-Index werden in dieser Version von SQL Server nicht unterstützt. Erstellen Sie einen gruppierten Index und versuchen Sie es erneut. Constraint konnte nicht gelöscht werden. Siehe vorherige Fehler. Die Anweisung wurde beendet.' – hyperN
Welche Version von SQL Server verwenden Sie? – JamesT