Estoy agregando una nueva migración, pero este mensaje muestra:
No se puede generar una migración explícita porque las siguientes migraciones explícitas están pendientes: [201203170856167_left]. Aplique las migraciones explícitas pendientes antes de intentar generar una nueva migración explícita.
¿Alguien puede ayudarme?
entity-framework
ef-migrations
Noman Saeed
fuente
fuente
Respuestas:
Le indica que hay una migración sin procesar en su aplicación y que debe ejecutarse
Update-Database
antes de que pueda agregar otra migración.fuente
-StartupProject ContentHub.Database
Update-Database
da> No se puede actualizar la base de datos para que coincida con el modelo actual porque hay cambios pendientesYo tuve el mismo problema. Aparentemente, el marco de la entidad genera este error cuando no puede conectarse a la base de datos. Por lo tanto, asegúrese de poder acceder a él antes de buscar otros problemas.
fuente
Debe ejecutar "update-database" desde la consola del administrador de paquetes para enviar sus cambios a la base de datos O puede eliminar el archivo de migración pendiente ([201203170856167_left]) de su carpeta Migrations y luego volver a ejecutar "add-migration" en cree una nueva migración basada en sus ediciones.
fuente
Este error también puede significar que las migraciones ya no se reconocen. Esto me sucedió después de haber cambiado el valor de ContextKey en Migrations.Configuration. La solución fue simplemente actualizar el ContextKey en la tabla de la base de datos "__MigrationHistory" (o revertir el valor en la clase de configuración, supongo). La clave de contexto y el espacio de nombres de su aplicación deben coincidir.
fuente
1. Cadena de conexión / Permisos de conexión
Vuelva a comprobar la cadena de conexión.
Asegúrese de que el usuario con el que se está conectando todavía tenga permiso para leer
[__MigrationHistory]
y tenga permiso para editar el esquema.También puede intentar cambiar la cadena de conexión en la aplicación o el archivo de configuración web para usar Seguridad integrada (Windows Auth) para ejecutar el comando add-migration como usted mismo .
Por ejemplo:
Esta cadena de conexión iría en el archivo App.config del proyecto donde se encuentra DbContext.
2. Proyecto de inicio
Puede especificar el proyecto de inicio en la línea de comando o puede hacer clic con el botón derecho en el proyecto con la carpeta
DbContext
,Configuration
y Migraciones y seleccionar Establecer como proyecto de inicio . Lo digo en serio, esto realmente puede ayudar.fuente
Integrated Security
solución funciona muy bien!Tuve el mismo problema y pude resolverlo con algunas sugerencias de las respuestas anteriores:
Utilice "update-database -verbose" en la consola del administrador de paquetes para obtener información más específica a la que intentan conectarse las migraciones. (Ayudó en mi caso a descubrir que mi proyecto de inicio no estaba configurado correctamente ...)
fuente
Si no lo ha usado
Update-Database
, simplemente puede eliminarlo. Si ha ejecutado la actualización, revertirla usandoUpdate-Database -TargetMigration "NameOfPreviousMigration"
y luego eliminarla.Referencia: http://elegantcode.com/2012/04/12/entity-framework-migrations-tips/
Copié este texto directamente desde aquí: ¿Cómo deshago el último comando Agregar-Migración?
fuente
Cuando se encuentre con este problema, intente agregar parámetros a su cmdlet add-migration. Por ejemplo, especificar el proyecto de inicio así como el nombre de la cadena de conexión podría ayudar a EF a encontrar su base de datos de destino.
Dónde:
Delta_Defect_0973 es el nombre de su migración
your.namespace.ContextClassName es el nombre de su clase de configuración en su carpeta de migración, con el prefijo del espacio de nombre completo.
DeltaProject es el nombre de su proyecto principal con su archivo web.config o app.config.
DeltaSQL es el nombre de su cadena de conexión definida en su archivo web.config o app.config.
fuente
Este error significa que hay migraciones pendientes que deben confirmarse antes de poder ejecutar otra migración explícita. Puedes elegir
Después de este, puede iniciar "Add-Migration ..." nuevamente
Espero eso ayude
fuente
Solo mis dos centavos:
Mi escenario:
Solución:
Para evitar esto, solo proporcioné parámetros más explícitos:
Me hacen creer que puede establecer una configuración en su carpeta app.config para permitirle establecer este comportamiento de forma predeterminada para que no tenga que proporcionar parámetros explícitos cada vez. Sin embargo, no estoy seguro de cómo hacer esto.
fuente
-ConnectionStringName
es una alternativa a esto, yHay una ambigüedad y, por tanto, un error. La mejor manera es excluir el archivo de migración actual y crear un nuevo archivo de migración ( agregar-migración ) y luego copiar el contenido de la nueva migración al archivo excluido e incluirlo nuevamente y ejecutar el comando update-database .
fuente
update-database
comando, luego volví a intentarloadd-migration
y funcionóResolví el mismo problema como este:
fuente
Tuve los mismos problemas y solo pude resolverlo ejecutando Add-Migration 'MigrationName' -Force
Con -Force siendo la parte importante.
fuente
Mi base de datos local no tenía el
__MigrationHistory
archivo. Creé manualmente la tabla y luego migré los datos en esa tabla de PROD a mi base de datos local. Esto hizo que VS pensara que se habían aplicado las migraciones (que sí).fuente
Consejo: siempre es bueno usar el
-Script
conmutador para los comandos de migración si no está seguro. También ayuda mucho a comprender quéUpdate-Database
realmente hace.Ejecuto lo siguiente para actualizar la base de datos, luego obtengo un script que puedo aplicar manualmente (o simplemente ejecutarlo de nuevo sin la etiqueta -Script).
Porque
Update-Database
ejecutaría lo siguiente:Update-Database -Script -ConfigurationTypeName Configuration_ASPNETIdentity -ConnectionStringName SQL_AzureLive
¿Dónde
SQL_AzureLive
está la cadena de conexión nombrada en mi configuración?Luego puedo verificar que SQL se vea bien, aplicarlo y listo. Como muchos otros han dicho, si la cadena de conexión es incorrecta o no es válida, obtendrá este error.
fuente
Para mí, eliminé el archivo de migración (en su caso, "201203170856167_left") de la
Migrations
carpeta y luego ejecuté el siguiente comando en la consola del Administrador de paquetesfuente
Guión
Problema
Después de actualizar desde el maestro, ejecuto "Add-Migration my_migration_name", pero obtengo el siguiente error:
Entonces, ejecuto "Update-Database" y obtengo el siguiente error:
Solución
En este punto, volver a ejecutar "Add-Migration my_migration_name" resolvió mi problema. Mi teoría es que ejecutar "Update-Database" tiene todo en el estado necesario para que funcione "Add-Migration".
fuente
También me encontré con este problema. Llegó cuando creé una nueva base de datos y tenía cambios pendientes para mi migración de base de datos de código primero y luego intenté ejecutar el comando "Actualizar base de datos". Solución: Ejecute el comando "Add-Migration -MigrationName" para crear una nueva migración para una nueva base de datos. Luego ejecute el comando "Update-Database".
fuente
También tuve este problema para una base de datos que sabía que estaba actualizada al ejecutar Add-Migration. Resuelto simplemente ejecutando el comando Add-Migration por segunda vez. Sospeche de un problema de conectividad, como sugirió Robin Dorbell anteriormente.
fuente
Eso sucedió cuando de repente cambié el nombre de una clase de migración antigua que ya existe en db. Revisé el historial de VCS, lo determiné y le cambié el nombre. Todo funcionó después.
fuente
Hice de otra manera. Eliminé la base de datos por completo y ejecuté "update-database" nuevamente en vs.
fuente
Tuve un problema más simple. VS informó erróneamente este error cuando tenía una conexión VPN al sitio de un cliente conectado en mi estación de trabajo. El problema era que la seguridad del DBMS estaba configurada para aceptar solicitudes solo de mi IP local real. Simplemente apagando la VPN resolvió el problema.
fuente
En mi caso, olvidé agregar mi dirección IP en las reglas de firewall en Azure, básicamente como no pude conectarme a la base de datos, recibí este error. Entonces, específicamente para mi caso, agregué mi dirección IP en las reglas de firewall de la base de datos en Azure y todo funcionó bien. Aparte de esto, podría ser el problema de proxy / conexión a Internet / contraseña de nombre de usuario de base de datos / cadena de conexión de base de datos, etc. O, obviamente, es posible que tenga migraciones pendientes para las que necesite ejecutar el comando Update-Database.
fuente
Históricamente, siempre resolví esto eliminando las migraciones pendientes, o si solo quedaba 1 y era principalmente deseable, usando
-f
para recrearlo.Recientemente, esto ha dejado de funcionar para mí.
Cuando esto sucedió por primera vez, reinicié Visual Studio y luego me dejó continuar.
La segunda vez, solo funcionó después de ejecutar una limpieza en el proyecto. Era casi como si las migraciones pendientes se mantuvieran a pesar de eliminar todos los archivos del explorador.
fuente
Esta no será la respuesta para muchas personas, pero EF arrojará este error cuando no pueda conectarse a la base de datos. Si trabaja desde casa como yo, ¡asegúrese de estar conectado a su VPN!
fuente
Sufrí exactamente el mismo problema justo después de revertir de una migración a otra.
En mi caso, hice una "migración dirigida" de "migración06" a "migración04".
Necesitaba eliminar la "migración0" 6 y luego pude forzar la creación de la "migración05". Esto básicamente significa que solo necesita mantener la siguiente migración después de la objetivo.
fuente
En mi caso (usando MS Visual Studio), fue tan simple como reiniciar Visual Studio.
fuente