entity framework - mvc - ¿Cómo puedo deshabilitar el código de las primeras migraciones?
entity framework core migrations (4)
Entonces, la respuesta más completa que he encontrado es esta:
- Eliminar la carpeta
Migrations
dentro de su proyecto. - Establecer
Database.SetInitializer<DatabaseContext>(null);
dentro de su inicializador DatabaseContext. - Elimine la tabla
__MigrationHistory
dentro de su base de datos. Para EF6 +, la tabla se encuentra enTables
pero para las versiones anteriores se encuentra enSystem Tables
. - Construir y correr
- Lucro.
Tengo un modelo de entidad de primer código en EF5. Pero quiero administrar los cambios de la base de datos de forma manual. No quiero que EF modifique mi base de datos existente y todos sus datos. Pero cuando hago cambios paralelos en la asignación de EF y en la base de datos, EF se niega a operar correctamente diciéndome que necesito usar la primera migración de código. ¿Cómo desactivo esto?
Si quieres desactivar completamente las migraciones:
https://.com/a/9709407/141172
Sin embargo, me pareció mejor mantener activadas las primeras migraciones de código, pero utilizo la opción -Script
para que EF cree un script de cambio de DB 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 forma, EF creará el script de cambio para mí, y aún tengo control total sobre los cambios que se aplican. Yo versión los scripts de cambio como cualquier otro código fuente.
Si ya usó Migraciones, cambiar solo el Inicializador no ayudará. __MigrationHistory
ir a Management Studio, abrir las tablas de la base de datos, ir a la carpeta System Tables
y eliminar la tabla __MigrationHistory
que se encuentra allí (para EF6 y superior, se encuentra directamente debajo de Tables
). Esto deshabilitará Migraciones para siempre.
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);
}