Sto utilizzando EF 4.3.1 Code First Migrations. Ho una tabella come:Migrazioni EF: Sposta tabella da 2 colonne PK a colonna singola causa ALTER prima di DROP e fallisce
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; }
}
Ho una tabella esistente creata con il codice precedente. Poi mi sono trasferito a una singola colonna di chiave primaria:
public class Product
{
[MaxLength(100)]
public string Store { get; set; }
[Key]
[MaxLength(100)]
public string Sku { get; set; }
}
Questo fa sì che EF a fallire nella prossima migrazione automatica, lamentandosi:
ALTER TABLE [prodotto] modificare la colonna [Store] nvarchar
L'oggetto "PK_Product" dipende dalla colonna "Store". ALTER TABLE ALTER COLUMN L'archivio non è riuscito perché uno o più oggetti accedono a questa colonna .
Chiaramente PK_Product deve essere eliminato prima di tentare di attivare questa istruzione ALTER (perché modifica la colonna?), Ma la migrazione non riesce.
Sto facendo qualcosa di sbagliato o si tratta di un bug? Soluzioni alternative?
Add-Migration ha generato i precedenti comandi (e altro). Si scopre che erano semplicemente fuori servizio - spostando DropPrimaryKey come hai fatto qui sopra prima della modifica della colonna, è stato risolto. Quindi, per essere chiari, la migrazione finale è stata DropPrimaryKey, AlterColumn, AddPrimaryKey. Penso che questo sia un bug in Migrations data la semplicità della soluzione, piuttosto che una limitazione intrinseca. –
Sì, quindi il mio ** grassetto ** nel "dopo" :-) –