Cuando agrego una nueva tabla que tiene algunas relaciones con mi base de datos y luego ejecuto Add-Migration
veo que el código se genera en el método Up
para agregar la tabla y sus relaciones. Sin embargo, prefiero definir la relación usando la API fluida en el método OnModelCreating
. ¿Cómo interactúan estos dos métodos? ¿Puedo eliminar el código del método Up
que define la relación, por ejemplo?¿Cómo se relacionan las migraciones OnModelCreating y las migraciones no automáticas?
Respuesta
Cada uno de ellos tiene el propósito completamente diferente:
OnModelCreating
se utiliza para las definiciones en línea fluidez de la API de su modelo. Estas definiciones junto con convenciones predeterminadas, anotaciones de datos y clases de configuración forman la definición completa del modelo.- migración explícita define lo que debe hacerse a base de datos para migrar a la forma requerida por el modelo actual
Ahora, ¿cómo los dos se refieren? La migración tiene dos entradas que se usan para generar código de migración (métodos Up
y Down
). Una entrada es el último registro de migración almacenado en la tabla __MigrationHistory
en la base de datos. Este registro contiene un modelo serializado que representa la base de datos. Esta entrada es opcional porque la primera migración debe funcionar sin ella. La segunda entrada es obligatoria: es su modelo actual que se recupera al ejecutar el código en su ensamblado actual =>Add-Migration
ejecutará su OnModelCreating
para obtener el modelo actual y compararlo con el modelo recuperado de la base de datos. El resultado de la comparación es el contenido de los métodos Up
y Down
en la migración explícita.
- 1. EF Migrations: RenameColumn en Migraciones automáticas?
- 2. ¿Cómo se saltea las migraciones fallidas? (rake db: migrate)
- 3. Revertir todas las migraciones de carriles o eliminar tablas y modificar migraciones (comenzar desde cero)
- 4. métodos de definición de las migraciones Rieles
- 5. ¿Cuándo (si) consolida las migraciones de ActiveRecord?
- 6. MongoMapper y migraciones
- 7. ¿Debería aplanar las migraciones de Rails?
- 8. ¿Cómo manejas las Migraciones de Doctrine cuando usas Git?
- 9. ¿Cómo excluyo las migraciones del sur de Pylint?
- 10. Cómo configurar el "número de versión" actual de las migraciones?
- 11. ¿Cómo pruebo las migraciones de bases de datos?
- 12. Administración de migraciones mongoid
- 13. Ejecutando migraciones hacia el sur para todas las aplicaciones
- 14. Añadir filas en migraciones
- 15. ¿Existe alguna manera de extender las primeras migraciones de código?
- 16. Rieles rebase las migraciones en un proyecto de larga duración
- 17. Entity Framework - Comenzar de nuevo - Deshacer/Revertir todas las migraciones
- 18. ¿Cómo se relacionan las bibliotecas estáticas con las dependencias?
- 19. Las migraciones desde los módulos no se ejecutan mediante el comando yiic migrate
- 20. Yii migraciones db automática
- 21. ¿Hay un equivalente PHP de las migraciones de Rails?
- 22. Django 1.3 y migraciones del sur
- 23. Convenciones de nomenclatura para las migraciones de Rails
- 24. ¿Cómo revertir migraciones utilizando Flyway?
- 25. No se pueden habilitar las migraciones para Entity Framework en la biblioteca de clases
- 26. Migraciones para Java
- 27. ¿Cómo se relacionan las metodologías Ágil, Lean y Kanban?
- 28. ¿Cómo se relacionan las fábricas y los patrones?
- 29. Manejo de migraciones con MongoDb
- 30. Migraciones de datos y App Engine
Gracias! Por lo tanto, si entiendo correctamente, el código en el método 'Arriba' reflejará las definiciones establecidas en el método' OnModelCreating' (suponiendo que haya agregado una Migración luego de escribir la definición clara de la API por supuesto). Uno debe * no * eliminar estas definiciones reflejadas de 'Arriba'. – Dabblernl
Sí, eso es correcto. –