¿Cómo migrar la base de datos sin nuget? No es posible usar Visual Studio con nuget en el entorno de producción. Actualmente, muchos ejemplos solo nos enseñan a usar Visual Studio con nuget. ¿Cómo usar las clases generadas de DbMigration?Código EF Primera DbMigración sin nuget
Respuesta
La forma más sencilla es:
Database.SetInitializer(
new MigrateDatabaseToLatestVersion<MyDbContext,
MyDbMigrationsConfiguration>());
Esto ejecutará las migraciones al inicializar el DbContext.
También puede forzar la ejecución de forma manual:
var migrator = new DbMigrator(new MyMigrationsConfiguration());
migrator.Update();
(creo que también hay que establecer TargetDatabase
de la configuración, pero se puede tratar)
Puede hacerlo utilizando las herramientas de EF Power, existe el programa migrate.exe que puede usar para ejecutar migraciones desde el símbolo del sistema (publicación posterior, por ejemplo). Si desea ejecutar migraciones en la base de datos de producción, también puede usar el comando Actualizar-Base de datos para generar scripts SQL de las clases de migración, muy útil si necesita pasar por un DBA.
Herramientas Eléctricas EF están disponibles en la Galería de Visual Studio y opcionalmente here, echa un vistazo a esto muy útil video que, entre otras cosas, habla sobre el comando Update-Base de datos.
puede migrar a la última versión utilizando una Configuración de Web.config: consulte this blog post by Rowan Miller:
Si está utilizando Code First Migrations, puede configurar la base de datos para que se migre automáticamente utilizando la inicialización de MigrateDatabaseToLatestVersion er.
<contexts>
<context type="Blogging.BlogContext, MyAssembly">
<databaseInitializer type="System.Data.Entity.MigrateDatabaseToLatestVersion`2[[Blogging.BlogContext,
MyAssembly], [Blogging.Migrations.Configuration, MyAssembly]], EntityFramework" />
</context>
</contexts>
sólo cambio de su clase en el contexto aquí: la System.Data.Entity.MigrateDatabaseToLatestVersion es incorporado a EF. Esta configuración actualiza la versión anterior de AppSettings de la misma idea.
En mi opinión, esta es la mejor manera, porque la pregunta de qué inicializador usar es realmente una configuración, y quiere ser capaz de configurarlo en la Web, y aplicar idealmente transformaciones de configuración para trabajar en sus diferentes entornos .
Estas son las opciones:
- utilizar la herramienta de línea de comandos migrate.exe que se incluye en el paquete NuGet .
- Utilice el inicializador MigrateDatabaseToLatestVersion como que otros han descrito.
- Utilice la API de tiempo de ejecución disponible de la clase DbMigrator .
Estaba buscando una forma de controlar qué migraciones se ejecutan explícitamente en código sin la necesidad de una clase DbConfiguration o migraciones automáticas habilitadas.
Así logré crear la siguiente extensión:
public static void RunMigration(this DbContext context, DbMigration migration)
{
var prop = migration.GetType().GetProperty("Operations", BindingFlags.NonPublic | BindingFlags.Instance);
if (prop != null)
{
IEnumerable<MigrationOperation> operations = prop.GetValue(migration) as IEnumerable<MigrationOperation>;
var generator = new SqlServerMigrationSqlGenerator();
var statements = generator.Generate(operations, "2008");
foreach (MigrationStatement item in statements)
context.Database.ExecuteSqlCommand(item.Sql);
}
}
A modo de ejemplo, tener una migración similar a la siguiente:
public class CreateIndexOnContactCodeMigration : DbMigration
{
public override void Up()
{
this.CreateIndex("Contacts", "Code");
}
public override void Down()
{
base.Down();
this.DropIndex("Contacts", "Code");
}
}
usted podría funcionar usando su DbContext:
using (var dbCrm = new CrmDbContext(connectionString))
{
var migration = new CreateIndexOnContactCodeMigration();
migration.Up();
dbCrm.RunMigration(migration);
}
hay otra solución:
Using DB = New SHAContext()
If DB.Database.Exists() Then
Dim migrator As New DbMigrator(New SHAClassLibrary.Migrations.Configuration())
For Each m In migrator.GetDatabaseMigrations()
Try
migrator.Update(m)
Catch ex As Exception
End Try
Next
End If
'DB.test()
End Using
- 1. Herencia EF Código-Primera
- 2. CTP5 EF Código primera pregunta
- 3. Código de EF Primera carga ansiosamente forzada
- 4. EF 4.1 Código Primera Edición después de actualización
- 5. código EF primera: dbcontext heredado crea dos bases de datos
- 6. Código EF Primera - calcular (x => x.Properties.Entity) 1: Muchos asociación
- 7. muchos a muchos colección con código de EF primera
- 8. clave única con el código de EF primera
- 9. Convertir este SQL a lambda para EF 4 Código primera
- 10. Código EF Primera: no incluyen el trabajo en relación opcional
- 11. EF 4.1 Código primera clave externa agrega la columna extra
- 12. Código EF Primera - API Fluido (WithRequiredDependent y WithRequiredPrincipal)
- 13. Código de EF Primero - WithMany()
- 14. seguimiento de cambios de discrepancia con el Código DbContext y EF Primera
- 15. Seleccionar columnas específicas de la base de datos utilizando código de EF Primera
- 16. Generar base de datos SQL CE a partir del código EF-Primera clase DbContext
- 17. ¿Cómo se interpreta un tipo de enumeración con el Código de EF Primera
- 18. Primera migración del código EF con múltiples bases de datos/DbContext
- 19. Código EF La primera columna adicional en la tabla de unión para los propósitos que ordenan
- 20. Código-primera referencia uno-a-muchos
- 21. ¿Cómo instalo y configuro RESTSharp sin NuGet?
- 22. Agregue el paquete NuGet sin sus dependencias
- 23. ¿Cómo obtener Entity Framework 4.2 sin Nuget?
- 24. Código EF4: la primera causa InvalidOperationException
- 25. EF 4 - Lazy Loading Sin Proxies
- 26. Entity Framework 5 Comandos de Nuget Console
- 27. Primer código de EF Colecciones personalizadas
- 28. Código EF Primero con muchas referencias autorreferenciales
- 29. Tablas EF Código Primero no generar
- 30. Código EF First DBContext and Transactions