Sono nuovo al codice EF5 Prima di tutto e sto armeggiando con una dimostrazione di concetto prima di imbarcarmi in un progetto al lavoro.Primo codice EF5: modifica di un tipo di colonna con le migrazioni
mi hanno inizialmente creato un modello che sembrava qualcosa di simile
public class Person {
public int Id { get; set; }
public string FirstName { get; set;}
public string Surname {get;set;}
public string Location {get;set;}
}
E ho aggiunto alcuni record utilizzando una piccola applicazione MVC ho attaccato sulla parte superiore.
Ora voglio cambiare la colonna posizione per un enum, qualcosa di simile:
public class Person {
public int Id { get; set; }
public string FirstName { get; set;}
public string Surname {get;set;}
public Locations Location {get;set;}
}
public enum Locations {
London = 1,
Edinburgh = 2,
Cardiff = 3
}
Quando aggiungo la nuova migrazione ottengo:
AlterColumn("dbo.People", "Location", c => c.Int(nullable: false));
ma quando ho eseguito update-base di dati che ottiene un errore
Conversion failed when converting the nvarchar value 'London' to data type int.
C'è un modo nella migrazione per troncare la tabella prima che venga eseguita l'istruzione altera ?
So che posso aprire il database e farlo manualmente, ma c'è un modo più intelligente?
Io suggerirei per gli sviluppatori in posizioni simili che vedono se la conversione viene gestita automaticamente da Entity Framework prima di seguire alcune delle risposte in questa pagina. Ad esempio, ho trovato che gestisce la conversione tra una stringa e un decimale e torna indietro senza alcun aiuto da parte mia: la migrazione generata da Add-Migration funziona correttamente. Ovviamente, provalo su un database locale/di test prima di applicarlo alla produzione! – pipedreambomb