Tengo:
AutomaticMigrationsEnabled = True
AutomaticMigrationDataLossAllowed = False
en mi archivo de configuración y el modelo actual es:
Public Property ID() As Integer
Public Property ERP_ArticleCode() As String
Public Property description() As String
Todo lo que hice fue cambiar la 3ª columna de «descripción» a «am_description» y corrió «de la actualización de la base de datos -verbose» que resultó en un «migración Automática no se aplicó porque resultaría en la pérdida de datos»!
Yo no entiendo esto… ¿por qué no puedo cambiar el nombre de una columna y actualización de la base de datos – esto no debería ser un dataloss problema, si? Estoy haciendo algo mal?
- ¿cómo podría saber que están cambiando la columna y no está eliminando y añadiendo una nueva?
- Comentario justo. Así que la única manera de arreglar esto es manualmente chang el «hasta» método y hacerlo «alter column» en lugar de «eliminar» y luego «agregar»?
Deberá modificar su arriba y abajo de método y reemplazar el AddColumn y DropColumn instrucciones con RenameColumn.
EF no puede detectar si vas a cambiar el nombre de una columna o si desea eliminar uno y crear una nueva.
Este código siguiente no es necesario para ejecutar la Migración:
Y, de acuerdo a este artículo (de entityframework codeplex), este es un EF error y usted puede ignorar este con
-Force
atributo en su migración.o
Se debería resolver su problema.
De la OMI, usted debe dejar EF decidir lo que hace con sus columnas, es sólo mi opinión.
He resuelto como este, simplemente escriba:
Mi problema era que yo tenía otro cambio menor que en sí era una migración. Al intentar actualizar. Consulte con
Update-Database -Name "peek"
, sólo para ver si usted tiene demasiado.También he visto esto cuando tengo una migración aplicado a mi base de datos que está en una rama paralela, que mi rama actual no tiene conocimiento de y yo intento de volver a algunos viejos de la migración. La mejor solución no es volver a la creación de la rama y volver a la última migración común entre las dos ramas.
Usted tiene que cambiar la línea
a
Nota: tomar medidas de precaución para el uso de cierto sólo en su entorno de desarrollo, ya que puede resultar en la pérdida de datos después de que se ha implementado para la producción.
RenameColumn
debe utilizarse en su lugar.