Entity Framework Code First Migration - Lathund

Share on:

Lägg till ny migrering

PM> Add-Migration "Namn För Migrering"

Kör migrering mot databas.

PM> Update-Database -Verbose
	-ConnectionStringName "MyConnectionName"
	-script //förhandsgranska script utan att köra
	-f //force, kör trots att data kan raderas

Hämta alla migreringar som har körts på databasen

PM> Get-Migrations

Rulla tillbaka/framåt till en specifik migration

PM> Update-Database -TargetMigration:"1234"

Rulla tillbaka alla migreringar

PM> Update-Database -TargetMigration:0

Starta om från scratch och strunta i alla migreringar.

Radera den fysiska databasen och kör nedan, vartefter du tar bort migration-filerna i Migrations-katalogen. Sen är det bara att lägga upp en ny migrering som vanligt för att initiera alla klasser/tabeller.

PM> Enable-Migrations -Force

Kör SQL-filer som resurser i en migrering:

 1    public partial class MigrationName: DbMigration
 2    {
 3        public override void Up()
 4        {
 5            this.Sql(SqlFiles.Drop_Job_ClearExpiredSessionData);
 6            this.Sql(SqlFiles.Create_Job_ClearExpiredSessionData);
 7        }
 8        
 9        public override void Down()
10        {
11            this.Sql(SqlFiles.Drop_Job_ClearExpiredSessionData);
12        }
13    }

Skapa unikt index på kolumn:

1	CreateIndex(table: "DbTabell",
2		column: "DbKolumn",
3		unique: true,
4		name: "MittUnikaIndex");
5
6	DropIndex("DbTabell", "MittUnikaIndex");

Mergeproblem när man i två separata brancher skapar migrations som mergas in till samma branch, vilket vid update-database resulterar i: Unable to update database to match the current model because there are pending changes and automatic migration is disabled. Vid add-migration vill den skapa en ny migration med samma innehåll som redan finns. Lösningen är att gå tillbaka till migreringen innan problemen, köra update-database mot den första problematiska (som targetmigration) och sen göra add-migration med samma namn som den andra migreringen som står på tur. Då uppdateras enbart resx-filen: Källa: https://coding.abel.nu/2012/02/ef-migrations-and-a-merge-conflict/

1Update-Database -Verbose -TargetMigration "201810081228449_Mig1"
2Add-Migration "201810291303139_Mig2"
3Update-Database -Verbose