Tengo un modelo de entidad de código primero en EF5. Pero quiero administrar los cambios de la base de datos manualmente, no quiero que EF modifique mi base de datos existente y todos sus datos. Pero cuando hago cambios paralelos en el mapeo de EF y en la base de datos, EF se niega a operar correctamente y me dice que necesito usar la migración de código primero. ¿Cómo apago esto?
entity-framework
migration
code-first
Stan Hargrove
fuente
fuente

Respuestas:
establezca Database.SetInitializer en nulo.
public class DatabaseContext: DbContext { //the base accepts the name of the connection string provided in the web.config as a parameter public DatabaseContext() : base("DatabaseContext") { //disable initializer Database.SetInitializer<DatabaseContext>(null); }fuente
__MigrationHistoryno tiene la última migración y no quiere hazlo de todos modos. En mi caso, utilizo migraciones en un entorno de desarrollo, pero cuando implemento en producción, uso SSDT para actualizar la base de datos. Por lo tanto, EF se quejaría de que el modelo ha cambiado porque__MigrationHistoryno tendría la última migración, pero puedo garantizar que la base de datos esté actualizada.Database.SetInitializerdel constructor al constructor de la clase. Eso garantiza que la llamada solo se realice una vez.Entonces, la respuesta más completa que he encontrado es esta:
Migrationscarpeta dentro de tu proyecto.Database.SetInitializer<DatabaseContext>(null);dentro de su inicializador de DatabaseContext.__MigrationHistorydentro de tu base de datos. Para EF6 +, la tabla se encuentra debajo,Tablespero para versiones anteriores se encuentra debajoSystem Tables.fuente
__MigrationHistorycada vez que se inicia mi aplicación, lo que agrega algunos milisegundos más al tiempo de inicio de mi aplicación. ¿Hay alguna forma de desactivar la__MigrationHistoryverificación por completo?Si desea desactivar completamente las migraciones:
https://stackoverflow.com/a/9709407/141172
Sin embargo, me pareció mejor mantener habilitadas las primeras migraciones de código, pero use la
-Scriptopción para que EF cree un script de cambio de base de datos para mí que pueda aplicar a cada base de datos (desarrollo, control de calidad, producción) manualmente:Update-Database -Script -ProjectName MyProject -StartupProjectName MyProjectDe esa manera, EF creará el script de cambios por mí, y todavía tengo control total sobre los cambios que se aplican. Versiono los scripts de cambio como cualquier otro código fuente.
fuente
completely turn off migrations. Para hacer eso: agregueDatabase.SetInitializer<YourContextType>(null)al inicio de su aplicaciónSi ya usó Migraciones, cambiar solo el Inicializador no ayudará. Debe ir a Management Studio, abrir las tablas de su base de datos, ir a la
System Tablescarpeta y eliminar la__MigrationHistorytabla que se encuentra allí (para EF6 y superior, se encuentra directamente debajoTables). Esto deshabilitará las migraciones para siempre.fuente
System Tables.sp_rename. También desactivé el inicializador.Acabo de resolver este "problema" por
La configuración de mi entorno está siguiendo
1. Visual Studio 2017 15.8.2 2. ASP NET MVC project 3. .NET Framework 4.6.1 4. Entity Framework 6.2.0fuente
_MigrationHistorytabla automáticamente?