8

Recientemente actualicé un proyecto WFC que usa Entity Framework de v4.3.1 a 5.0.
Estoy ejecutando migraciones codificadas solamente (sin migraciones automáticas).El cuadro de diálogo Publicar web no detecta el contexto de my entity framework 5 como Code First

Anteriormente, estaba utilizando los perfiles de publicación para implementar esta solución y aplicar las migraciones. Desde que se actualizó el proyecto a EF5, la parte de migraciones ya no funciona y el diálogo de publicación no detecta el contexto como las primeras migraciones de código.

Específicamente, el archivo .pubxml cambió de detectar mi contexto como <Object Type="DbCodeFirst"> a <Object type="DbDacFx"> que es incorrecto para mi contexto.

Como solución temporal, agregué manualmente la configuración del inicializador de base de datos <entityFramework> a mis transformaciones web.config, pero me gustaría entender por qué los perfiles de publicación no funcionan. Esa fue una solución mucho más agradable.

+0

Eche un vistazo a [esto] (http://stackoverflow.com/questions/16543229/publish-entity-framework-code-first-migrations-with-no-context-in-the-startup-pr/16558527 # 16558527) publicación. Quizás te pueda ayudar ... – Liel

Respuesta

0

Probablemente haya perdido la adición de la referencia a EntityFramework en su proyecto. Con solo agregar la referencia, podrá controlar si la opción DbCodeFirst está disponible o no.

0

Como this post suggests, intente utilizar el nombre completo de su DbContext como nombre de la cadena de conexión. En lugar de:

Web.config

<connectionStrings> <add name="MyContext" .../> </connectionStrings>

Uso:

Web.config

<connectionStrings> <add name="MyNamespace.AnotherNamespace.MyContext" .../> </connectionStrings>

En mi caso, con el fin de utilizar mi Publi existente sh perfiles (.pubxml), también tuve que editar manualmente el <ObjectGroup Name="..." ...>. Probablemente recrear los perfiles de publicación también funcionaría.

0

Tuve el mismo problema pero no en el mismo contexto.

He estado usando Code First Migrations con la aplicación existente ASP.NET MVC 5.2.3 utilizando EF 6.1.3 durante un mes sin problemas. En un momento en el tiempo agregué soporte para Windows Azure Storage pero cometí algunos errores:

  • He añadido un nuevo proyecto. Lamentablemente elegí "Aplicación de consola" en lugar de "Biblioteca de clases". Intenté solucionarlo volviendo a "Biblioteca de clases" en "Configuración del proyecto"
  • Utilicé Nuget en Install-Package WindowsAzure.Storage pero lo instalé en el proyecto MVC y no en la biblioteca de clases. Traté de arreglarlo haciendo Uninstall-Package en el proyecto MVC y de su instalación en el proyecto correcto
  • Llamé a la clase en la biblioteca de clases "WorkOrderStorage"
  • he añadido el connectionString a <connectionStrings> elemento en web.config y una transformación en web.release.config

Supongo que mi proyecto ahora estaba en un estado incoherente. Noté que se olvidaría de Code First Migrations (supervisé los cambios en.archivo pubxml):

  1. cuando pongo una referencia entre el proyecto MVC y la biblioteca que contiene la clase WorkOrderStorage
  2. cuando creé una clase vacía 'WorkOrderStorage' en una de las bibliotecas existentes

Al final lo arreglé recreando esta biblioteca correctamente desde cero como una biblioteca de clase (debido a la observación 1). También llamé a la clase WorkOrderRepository (debido a la observación 2).

2

Me sucedió una vez cuando fusioné la confirmación de otro desarrollador y activé la recarga del proyecto de Visual Studio. Así es como causó el cambio de "DbCodeFirst" a "DbDacFx".

Si reinicio Visual Studio, todo vuelve a ser lo que debería ser.

Solo otro pensamiento.

+0

Es una lástima que @josh no haya marcado esto como la respuesta, aparte de la votación positiva solo puedo ofrecerte mi gratitud, esto me salvó el día, literalmente –

Cuestiones relacionadas