Dado que su base de datos de producción se creó con EF 4.1, necesitará hacer un poco de trabajo para que esté lista para su uso con Migrations. Comience con una copia de su código de producción actual ejecutándose en un entorno de desarrollo. Asegúrese de que la base de datos dev no exista.
Actualiza el proyecto de utilizar EF 4.3 (o posterior) con las migraciones y crear la migración inicial a la producción instantánea de lo que se ve actualmente similares.
Update-Package EntityFramework
Enable-Migrations
Add-Migration InitialCreate
reemplazar su inicializadores de base de datos se combina con el código de migraciones.
Para los datos de inicialización, agréguela al método Seed()
del archivo Migrations\Configuration.cs
. Tenga en cuenta que, a diferencia del método Seed()
en los inicializadores, este método se ejecuta cada vez que se llama al Update-Database
. Puede ser necesario actualizar las filas (restablecer los datos de inicialización) en lugar de insertarlas. El método AddOrUpdate()
puede ayudar con esto.
Dado que sus indecies únicas ahora se pueden crear con Migraciones, debe agregarlas al método Up()
de la migración InitialCreate. Puede encadenarlas en las llamadas CreateTable()
utilizando el método Index()
o llamando al método CreateIndex()
.
Ahora puede usar el inicializador MigrateDatabaseToLatestVersion para ejecutar migraciones durante la inicialización.
Obtenga un script para iniciar su entorno de producción.
Update-Database -Script
A partir de la secuencia de comandos que se genera, tendrá que eliminar casi todo ya que existen aready las tablas. Las partes que necesitará son las declaraciones CREATE TABLE [__MigrationHistory]
y INSERT INTO [__MigrationHistory]
.
Opcionalmente, deje caer la tabla EdmMetadata
ya que ya no es necesaria.
Una vez que hagas estas cosas, deberías ser bueno para ir con migraciones. Los nuevos desarrolladores pueden ejecutar Update-Database
para crear la base de datos desde cero, y puede ejecutar Update-Database
(o usar el inicializador de migraciones) para producir migraciones adicionales allí.
Esto es genial! ¡Muchas gracias! –
+1 por idempotencia. –
Lamentamos que el proceso sea tan complicado. Hicimos más fácil pasar de los interactuantes a las migraciones en 4.3: los inicializadores básicamente hacen esta parte por ti. Desafortunadamente, no había mucho que pudiéramos hacer para las personas que actualizan de 4.2 o menos. Bueno, otros luego responden sus preguntas sobre StackOverflow. ;) – bricelam