update remove migrations framework first existing enable code automatic entity-framework deployment ef-code-first entity-framework-5 code-first-migrations

entity framework - remove - El cuadro de diálogo Publicar web no detecta el contexto de mi entidad marco 5 como primer código



remove migration entity framework core (4)

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.

Recientemente, actualicé un proyecto de WFC que usa Entity Framework desde v4.3.1 a 5.0.
Estoy ejecutando migraciones codificadas solamente (sin migraciones automáticas).

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 alternativa, 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.


Tuve el mismo problema pero no en el mismo contexto.

Había 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 dado agregué soporte para Windows Azure Storage pero cometí algunos errores:

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

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

  1. cuando coloco 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).


Una vez me pasó 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.


Como sugiere esta publicación , 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>

Utilizar:

Web.config

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

En mi caso, para usar mis perfiles de publicación existentes (.pubxml), también tuve que editar manualmente <ObjectGroup Name="..." ...> . Probablemente recrear los perfiles de publicación también funcionaría.