5

Parece que CodeFirst deja de hacer sus deberes cuando no tiene el control total de la base de datos (supongo). El escenario es un sitio web alojado en Arvixe.com (o supongo que cualquier otro servidor de alojamiento compartido), donde tengo que crear bases de datos solo desde su panel de control (y NO con Sql Server Management Studio, solo para decir ...) . Una vez creado una base de datos vacía, se registra una conexión en el sitio web, y lo uso para generar la base de datos de objetos Poco como en:add-migration no funciona con bases de datos remotas del servidor SQL en el alojamiento compartido

complemento migración m1 -TargetDatabase MyConnection

Esto genera correctamente mi primera migración , que pueda aplicar sin problemas con

actualización de base de datos -TargetDatabase MyConnection

la primera preocupación, no es demasiado importante, es que desde la base de datos existente, no emitirá el comando de la semilla, así que tengo que inserte mis primeros registros a mano, pero esto es no es un gran problema

Luego de que cambie de objetos POCO, y es necesario que actualice la base de datos, pero cuando se emite otro

complemento migración m2 -TargetDatabase MyConnection

se da el error:

sistema. Data.Entity.Migrations.MigrationsPendingException: no se puede generar una migración explícita porque están pendientes las siguientes migraciones explícitas: [201111081426466_m1]. Aplique las migraciones explícitas pendientes antes de intentar generar una nueva migración explícita.

Esto es realmente extraño, ya que si miro a la base de datos, puedo ver incluso el __MigrationHistory mesa, pero entonces parece que no puede reconocerlo ...

Cualquier persona con el mismo problema, o alguna buena consejo a dónde investigar? Gracias de antemano, Andrea Bioli

+1

Ok, justo en el minuto después de la publicación, me di cuenta de que la tabla __MigrationHistory NO se crea como una tabla del sistema ... por lo que es obvio que la segunda vez, no puede encontrarla ... así que el problema parece ser ser el derecho de escribir la mesa en el lugar correcto ... – Andrea

Respuesta

1

Tuve este problema. Pude resolverlo proporcionando un connectionString y un parámetro connectionProviderName para los comandos Update-Database y Add-Migration.

Si tiene muchos proyectos en su solución con varios archivos de configuración, el Administrador de paquetes parece estar confundido. En mi caso, tuve un proyecto seleccionado como el proyecto predeterminado para Package Manager Console, pero en su lugar estaba extrayendo la cadena de conexión del proyecto de inicio de sesión predeterminado de la solución Visual Studio.

Cuestiones relacionadas