7
我正在使用EF 4.3.1代碼優先遷移。我有一個表如:EF遷移:將表格從2列PK移動到單列導致ALTER在DROP之前失敗並且失敗
public class Product
{
[Key]
[Column(Order=0)]
[MaxLength(100)]
public string Store { get; set; }
[Key]
[Column(Order=1)]
[MaxLength(100)]
public string Sku { get; set; }
}
我有用上面的代碼創建的現有表。然後我把它移到一個單列主鍵:
public class Product
{
[MaxLength(100)]
public string Store { get; set; }
[Key]
[MaxLength(100)]
public string Sku { get; set; }
}
這使得EF在未來的自動遷移失敗,抱怨:
ALTER TABLE [產品] ALTER COLUMN [存儲]爲nvarchar
對象'PK_Product'依賴於'Store'列。 ALTER TABLE ALTER COLUMN存儲失敗,因爲一個或多個對象訪問此列 列。
顯然,在嘗試觸發此ALTER語句(爲什麼它會更改列?)之前需要先刪除PK_Product,但遷移失敗。
我做錯了什麼或這是一個錯誤?解決方法?
添加遷移預生成了上述命令(以及更多)。事實證明,它們只是無序 - 通過在列更改之前移動DropPrimaryKey(如上所述),它已解決。所以爲了清楚起見,最終遷移到了DropPrimaryKey,AlterColumn和AddPrimaryKey。考慮到解決方案的簡單性,我認爲這是Migrations中的一個錯誤,而不是固有的限制。 –
是的,因此我** **在「之後」:-) –