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
__MigrationHistory
no 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__MigrationHistory
no tendría la última migración, pero puedo garantizar que la base de datos esté actualizada.Database.SetInitializer
del 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:
Migrations
carpeta dentro de tu proyecto.Database.SetInitializer<DatabaseContext>(null);
dentro de su inicializador de DatabaseContext.__MigrationHistory
dentro de tu base de datos. Para EF6 +, la tabla se encuentra debajo,Tables
pero para versiones anteriores se encuentra debajoSystem Tables
.fuente
__MigrationHistory
cada 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__MigrationHistory
verificació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
-Script
opció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 MyProject
De 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 Tables
carpeta y eliminar la__MigrationHistory
tabla 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.0
fuente
_MigrationHistory
tabla automáticamente?