entity-framework - visual - remove migration entity framework core
No se puede generar una migración explícita en el marco de la entidad (20)
1. Cadena de conexión / Permisos de conexión
Verifique la cadena de conexión nuevamente.
Asegúrese de que el usuario con el que se está conectando todavía tenga permiso para leer desde [__MigrationHistory]
y tenga permiso para editar el esquema.
También puede intentar cambiar la cadena de conexión en el archivo de configuración de aplicación o web para usar Integrated Security (autenticación de Windows) para ejecutar el comando add-migration como usted mismo .
Por ejemplo:
connectionString="data source=server;initial catalog=db;persist security info=True;Integrated Security=SSPI;"
Esta cadena de conexión iría en el archivo App.config del proyecto donde se encuentra el 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 DbContext
, Configuration
y Migraciones y seleccionar Establecer como proyecto de inicio . Lo digo en serio, esto realmente puede ayudar.
Estoy agregando una nueva migración, pero este mensaje muestra:
No se puede generar una migración explícita porque están pendientes las siguientes migraciones explícitas: [201203170856167_left]. Aplique las migraciones explícitas pendientes antes de intentar generar una nueva migración explícita.
¿Alguien puede ayudarme?
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.
add-migration Delta_Defect_0973 -ConfigurationTypeName your.namespace.ContextClassName -StartUpProject DeltaProject -ConnectionStringName DeltaSQL
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.
Eso sucedió cuando de repente cambié el nombre de la clase de migración anterior que ya existe en db. Comprobé el historial de VCS, lo determiné y renombré mi nombre. Todo funcionó después.
Este error significa que hay migraciones pendientes que se deben comprometer antes de poder ejecutar otra migración explícita. Puedes elegir
- Ejecuta esas migraciones pendientes usando el comando Update-Database
- Eliminar esas migraciones pendientes. La forma más segura es abrir la carpeta Migrations, hacer clic derecho en [201203170856167_left]> Excluir del proyecto
Después de este, puede volver a iniciar "Agregar migración ..."
Espero eso ayude
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). El ContextKey y el Namespace en su aplicación deben coincidir.
Hay una ambigüedad y un error. La mejor manera es excluir el archivo de migración actual y crear un nuevo archivo de migración ( add-migration ) y luego copiar el contenido de la nueva migración al archivo excluido e incluirlo nuevamente y ejecutar el comando update-database .
Lo hice de otra manera. Fallé completamente la base de datos y ejecuté "actualización-base de datos" nuevamente en vs.
Mi base de datos local no tenía __MigrationHistory
poblada o existente. Creé la tabla manualmente y luego migré los datos en esa tabla de PROD a mi base de datos local. Esto hizo que VS pensara que las migraciones se habían aplicado (lo que habían sido).
Necesita ejecutar "actualización-base de datos" 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]) desde su carpeta Migraciones y luego volver a ejecutar "agregar-migración" a crea una nueva migración basada en tus ediciones.
Si no ha utilizado Update-Database
simplemente puede eliminarla. Si ha ejecutado la actualización, Update-Database -TargetMigration "NameOfPreviousMigration"
utilizando Update-Database -TargetMigration "NameOfPreviousMigration"
, luego elimínela.
Referencia: http://elegantcode.com/2012/04/12/entity-framework-migrations-tips/
Copié este texto directamente desde aquí: ¿Cómo deshago el último comando Add-Migration?
Solo mis dos centavos:
Mi escenario:
- Restauré mi base de datos local a un estado de trabajo.
- Ya tenía migraciones ya aplicadas.
- Cada vez que intenté agregar una nueva migración, recibí el error sobre las migraciones pendientes, como mencioné en mi OP.
Solución:
Para evitar esto, acabo de proporcionar parámetros más explícitos:
Add-Migration -ConnectionString "Server=localhost/SQLEXPRESS;Database=YourDataBase;Trusted_Connection=True;" -ConnectionProviderName "System.Data.SqlClient" -verbose
Me hacen creer que puede establecer una configuración en la carpeta app.config para permitirle establecer este comportamiento de manera predeterminada, de modo que no tenga que proporcionar parámetros explícitos cada vez. Sin embargo, no estoy seguro de cómo hacer esto.
Sufrí exactamente el mismo problema justo después de revertir una migración a otra.
En mi caso, "dirigí la migración" de "migration06" a "migration04".
Necesitaba eliminar el "migration0" 6 y luego pude forzar la creación de "migration05". Esto básicamente significa que solo debe mantener la siguiente migración después del destino.
También me encontré con este problema. Llegó cuando creé una nueva base de datos y tuve cambios pendientes para mi migración de base de datos con código, luego intenté ejecutar el comando "Actualizar la base de datos". Solución: ejecute el comando "Add-Migration -MigrationName" para crear una nueva migración para la nueva base de datos. Luego ejecute el comando "Actualizar-Base de datos".
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 un problema de conectividad, como lo sugirió Robin Dorbell arriba.
Tuve el mismo problema y pude resolverlo con algunas sugerencias de las respuestas anteriores:
- En la consola del gestor de paquetes, compruebe el proyecto predeterminado (señale el proyecto con la configuración de migración
- Asegúrese de que startup-proj tenga un web.config con una conexión de conexión válida (o
- Asegúrese de que el proyecto con migraciones tenga un app.config / web.config con una conexión de cadena válida
- Compruebe los permisos en DB (para el usuario configurado en su conexión)
Use "update-database -verbose" en la consola del administrador de paquetes para obtener información más específica a la que las migraciones intentan conectarse. (Ayudé en mi caso a descubrir que mi proyecto de inicio no estaba configurado correctamente ...)
Tuve los mismos problemas y solo pude resolverlo ejecutando Add-Migration ''MigrationName'' -Force
Con -Fuerza siendo la parte importante.
Yo tuve el mismo problema. Aparentemente, el marco de entidad genera este error cuando no puede conectarse a la base de datos. Así que asegúrese de poder acceder a él antes de buscar otros problemas.
Consejo: Siempre es bueno usar el -Script
para los comandos de migración si no está seguro. También ayuda a entender qué hace realmente la Update-Database
.
Ejecuto lo siguiente para actualizar la base de datos, luego obtengo un script que puedo aplicar manualmente (o simplemente lo vuelvo a ejecutar sin la etiqueta -Script).
Para Update-Database
, ejecutaría lo siguiente:
Update-Database -Script -ConfigurationTypeName Configuration_ASPNETIdentity -ConnectionStringName SQL_AzureLive
Donde SQL_AzureLive
es la cadena de conexión nombrada en mi configuración.
Entonces puedo verificar que el SQL se ve bien, aplicarlo y terminar. Como muchos otros han dicho si la cadena de conexión es incorrecta o no válida, obtendrá este error.
Guión
- Estoy trabajando en una sucursal en la que creé una nueva migración de base de datos.
- Estoy listo para actualizar desde el maestro, pero el maestro también tiene una migración DB reciente.
- Borro la migración de db de mi sucursal para evitar conflictos.
- Yo "actualizo desde el maestro".
Problema
Después de actualizar desde el maestro, ejecuto "Add-Migration my_migration_name", pero aparece el siguiente error:
No se puede generar una migración explícita porque están pendientes las siguientes migraciones explícitas: [201607181944091_AddExternalEmailActivity]. Aplique las migraciones explícitas pendientes antes de intentar generar una nueva migración explícita.
Entonces, ejecuto "Update-Database" y obtengo el siguiente error:
No se puede actualizar la base de datos para que coincida con el modelo actual porque hay cambios pendientes y la migración automática está deshabilitada.
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 que necesitaba para que funcione "Add-Migration".
Le dice que hay alguna migración no procesada en su aplicación y requiere la ejecución de la Update-Database
para poder agregar otra migración.