Comment puis-je utiliser Entity Framework 5 Code First Migrations pour créer un script de base de données complet de l'état initial (vide) à la dernière migration?
Le billet de blog sur MSDN Blog suggère de le faire, mais il semble créer un script vide:
Update-Database -Script -SourceMigration: $InitialDatabase
L'API semble avoir changé (ou du moins, cela ne fonctionne pas pour moi).
L'exécution de ce qui suit dans la console du gestionnaire de packages fonctionne comme prévu:
Update-Database -Script -SourceMigration:0
Pour ajouter à la réponse de Matt Wilson, j'avais un tas de classes d'entités code-first mais pas de base de données car je n'avais pas fait de sauvegarde. J'ai donc effectué les opérations suivantes sur mon projet Entity Framework:
Ouvrez la console du Gestionnaire de packages dans Visual Studio et tapez ce qui suit:
Enable-Migrations
Add-Migration
Donnez à votre migration un nom tel que "Initial", puis créez la migration. Enfin, tapez ce qui suit:
Update-Database
Update-Database -Script -SourceMigration:0
La dernière commande créera vos tables de base de données à partir de vos classes d’entités (à condition que vos classes d’entités soient bien formées).
Pour tous ceux qui utilisent un noyau d’entité qui se termine ici. Voici comment tu le fais.
# Powershell / Package manager console
Script-Migration
# Cli
dotnet ef migrations script
https://docs.Microsoft.com/en-us/ef/core/managing-schemas/migrations/#generate-sql-scripts
Il existe plusieurs options pour cette commande.
La migration from doit être la dernière migration appliquée à la base de données avant l'exécution du script. Si aucune migration n'a été appliquée, spécifiez
0
(il s'agit de la valeur par défaut).La migration vers est la dernière migration qui sera appliquée à la base de données après l'exécution du script. Par défaut, la dernière migration de votre projet est effectuée.
Un script idempotent peut éventuellement être généré. Ce script applique uniquement les migrations si elles n'ont pas déjà été appliquées à la base de données. Cela est utile si vous ne savez pas exactement quelle a été la dernière migration appliquée à la base de données ou si vous effectuez un déploiement sur plusieurs bases de données dont chacune peut avoir une migration différente.