In this question, ho scoperto che le modifiche enum non sono gestite dalle migrazioni di Entity Framework. In effetti, le modifiche all'enumerazione non portano nemmeno a un errore di modello modificato, quindi puoi cambiare enum a volontà senza controlli.Gestione modifiche enum in Entity Framework 5
Le modifiche di enum che risultano in diversi valori int, come le modifiche o le rimozioni degli ordini, possono rendere i dati del database effettivamente non validi, poiché il significato del numero intero memorizzato è errato.
Per consentire alle Migrazioni di funzionare, è necessario eseguire manualmente SQL personalizzato che modifichi i valori di enum modificati.
Il problema è che lo sviluppatore deve ricordarsi di eseguire questa operazione e, in caso di supervisione, può verificarsi un danneggiamento dei dati efficace.
Come può qualcuno mettere in atto controlli contro questo? È possibile, nel caso in cui un enum cambi, lanciare un errore di modifica del modello o qualcosa del genere?
La stessa domanda vale per i nomi: se qualcuno dimentica di trattare lo speciale, la colonna precedente verrà eliminata e ne verrà creata una nuova. Le migrazioni automatiche non sono adatte per l'uso di produzione se il downtime è un problema. – usr
Poiché per le nuove enumerazioni non è richiesto alcun cambio di modello, non viene generato alcun errore di modifica del modello. EF non ha modo di sapere che il valore enum '1' nel database è diverso da 'Car' che aveva quel valore ma da quando è stato rinominato 'truck', le enumerazioni sono generalmente considerate costanti e non devono essere modificate. – simbolo
Bene c'è ContextKey - un nome di tipo completo e un modello - che è una specie di blob binario nella tabella __MigrationHistory. Quel blob dovrebbe contenere la definizione di Enum e rilevare questo tipo di modifiche. Apparentemente no. Questo sembra un cattivo design di EF. – Eiver