2013-11-27 7 views
5

Ich muss den Primärschlüssel einer vorhandenen Tabelle durch fließend-migrator umbenennen, damit ein Automapper die Spalte automatisch ermitteln kann.Wie können wir den Primärschlüssel einer Tabelle im Fluent-Migrator umbenennen?

Für die meisten Spalten ist es eine einfache 1) löschen Sie alle Fremdschlüssel Einschränkungen für diese Spalte 2) löschen Sie Indizes für diese Spalte und 3) benennen Sie die Spalte. Ich habe dies historisch geschehen durch:

 Delete.ForeignKey("foreignkeyconstraint").OnTable("mytable"); 
     Delete.Index("UserId").OnTable("mytable"); 
     Rename.Column("UserId").OnTable("mytable").To("UserInfo_id"); 

Allerdings scheint dies nicht für Primärschlüssel zu arbeiten, da ich den automatisch erstellten Index auf dieser Spalte nicht löschen können. Was ist der richtige Weg, um eine Primärschlüsselspalte mit fluent-migrator umzubenennen?

Antwort

2

So etwas sollte funktionieren, solange es nicht eine Identität (Autoinkrement) Spalte als auch ist:

Delete.PrimaryKey("PRIMARY KEY").FromTable("mytable"); 
+0

Zum Schreiben schlägt dies in der Azure-Datenbank fehl, wenn der Primärschlüssel der einzige gruppierte Index für die Tabelle ist. Ich habe zu diesem Zeitpunkt noch keinen Workaround gefunden und den Namen des Primärschlüssels unverändert gelassen. Dies ist jedoch möglicherweise keine Lösung für die Frage. – Manfred

+0

Einer der Vorteile von [labilbe] (http://stackoverflow.com/users/1195872/labbile) [Antwort] (http://stackoverflow.com/a/24406280/1488979) ist 'sp_rename' wird behandelt Dies für dich. Siehe [MSDN] (https://msdn.microsoft.com/en-us/library/ms188351.aspx). –

+0

@MichaelMinton Funktioniert aber nicht für mysql (gemäß Originalfrage) –

4

Verwenden Sie die folgende Methodenaufruf Primärschlüssel (SQL Server)

Execute.Sql("EXEC sp_rename N'[Current_Primary_Key_Name]', '[New_Primary_Key_Name]', 'object';"); 
umbenennen
Verwandte Themen