Est-il possible de changer l'emplacement de l'EF Migrations des “Migrations” dossier?
Par défaut, le complément de commande de migration tente de créer la migration .cs fichier dans
- Racine Du Projet
- Migrations
J'aimerais conserver mes migrations avec le reste de mon EF code dans le dossier \Data de mon projet:
- Racine Du Projet
- De données
- Migrations
- De données
Avec cette structure, lorsque j'execute
PM> add-migration Migration1
dans la console NuGet je reçois l'erreur suivante:
Système.IO.DirectoryNotFoundException: impossible de trouver une partie du chemin "C:\MyProjectRoot\Migrations1112171635110_Migration1.cs'. au Système.IO.__Erreur.WinIOError(Int32 errorCode, String maybeFullPath) au Système.IO.FileStream.Init(String path, FileMode mode, FileAccess accès, Int32 droits, Boolean useRights, FileShare part, bufferSize Int32, FileOptions options, SECURITY_ATTRIBUTES secattrs, Chaîne, Booléen bFromProxy, Boolean useLongPath) au Système.IO.FileStream..ctor(String path, FileMode mode, FileAccess accès, de la part de FileShare, bufferSize Int32, FileOptions options) au Système.IO.StreamWriter.CreateFile(chemin de la Chaîne, Booléen append) au Système.IO.StreamWriter..ctor(chemin de la Chaîne, Booléen append, Encoding, Int32 bufferSize) au Système.IO.StreamWriter..ctor(chemin de la Chaîne, Booléen append, Encoding) au Système.IO.Fichier.InternalWriteAllText(String path, String contenu, Encoding) au Système.IO.Fichier.WriteAllText(String path, String contenu)
Est-il possible de spécifier l'emplacement sur le disque que le fichier de migration doit être créé lors de l'exécution de l'add-commande de migration?
- Veuillez marquer de Roger solution comme la réponse. Il a travaillé pour moi. Merci.
Vous devez vous connecter pour publier un commentaire.
Dans la configuration de constructeur de classe ajoutez cette ligne:
L'espace de noms continuera à être défini comme l'espace de noms de la classe de configuration lui-même. Pour modifier cette ajouter cette ligne (également dans la configuration constructeur):
web.config
fichier?@"Migrations\Context1"
serait un exemple de chemin d'accès. Si vous obtenez une erreur bizarre sur le fichier déjà existant immédiatement après qu'il a réussi à créer pour la première fois, alors vous avez probablement mis@"Migrations\\Context1"
par erreur. (stackoverflow.com/a/30787200/16940)Précisant les migrations de dossier est également possible lors de l'appel de la
enable-migrations
de commande (ce qui crée laConfiguration
classe), à l'aide de la-MigrationsDirectory
paramètre:L'exemple, permettra de créer un
Configuration
de la classe qui définit laMigrationsDirectory
vers le dossier spécifié "Migrations\CustomerDatabases" qui est relatif aux projets de la racine du dossier.Voir aussi cette article qui explique au sujet d'un projet avec de multiples contextes et à la migration des dossiers.
Par ailleurs, si vous utilisez plusieurs migrations de dossiers et de multiples contextes, veuillez considérer également de mettre en place un nom pour le schéma par défaut dans le
OnModelCreating
méthode de vousDbContext
classe dérivée (où le Courant-de l'API de configuration).Cela fonctionne en EF6:
La volonté préfixe tables de base de données avec le nom de schéma. Cela vous permettra d'utiliser plus d'un contexte, avec une seule base de données dans un scénario où vous avez plusieurs groupes de tables qui sont indépendants l'un de l'autre.
(Cela permettra également de créer des versions distinctes de la MigrationHistory tables, dans l'exemple ci-dessus, il serait
CustomerDatabases.__MigrationHistory
).