J'ai donc réussi à faire fonctionner Code First et cela fonctionne très bien.
Étant donné que je développe encore l'application, la structure de la base de données n'est pas finalisée et j'ai donc besoin de mettre en œuvre des migrations.
J'ai suivi le Official Blog Post et obtenu que la commande Update-Database fonctionne.
Toutefois, cela met uniquement à jour la version SQLExpress de la base de données. La version de production de la base de données est sur Azure et je spécifie la chaîne de connexion au moment de l'exécution afin que la commande Update-Database ne fonctionne pas sur cela.
Ma dernière question est donc la suivante: comment appliquer des migrations automatiques à la base de données de production dont la chaîne de connexion est spécifiée lors de l'exécution?
Sur la console du gestionnaire de packages, tapez:
Get-Help Update-Database
Partie pertinente:
Update-Database [-SourceMigration <String>] [-TargetMigration <String>] [-Script] [-Force] [-ProjectName <String>] [-StartUpProjectName <String>] [-ConfigurationTypeName <String>] [-ConnectionStringName <String>] [<Com
monParameters>]
Vous pouvez donc faire un Update-Database -ConnectionStringName "MyConnectionString"
Et cela devrait fonctionner comme un charme.
Vous disposez également d'un initialiseur de base de données MigrateDatabaseToLatestVersion
, si vous le définissez (via Database.SetInitializer()
), lorsque vous déployez votre application en production avec une chaîne de connexion appropriée, lors du premier accès à la base de données, elle devrait migrer automatiquement votre base de données à la dernière version.
Je suggère cependant la prudence, toujours sauvegarder les choses.
Les récents commentaires de @Alexy Strakh ont engendré un autre argument qui mérite d'être mis dans la réponse.
Configuration correcte d'un système de déploiement à l'aide de Migrations en premier code, compte tenu de 2 chaînes de connexion.
Vous n'êtes pas censé interagir avec l'environnement de production à partir de votre boîte de développement, mais si vous avez vraiment besoin de le faire, alors faites-en une solution temporaire qui a besoin à revenir dès que vous avez terminé.
Une autre option consiste à simplement utiliser Web.Debug.config et Web.Release.config et à avoir un modèle central pour le web.config principal (qui serait le seul que vous archivez dans votre contrôle de code source).
Assurez-vous simplement de ne jamais archiver les mots de passe de production ou de développement personnel (le cas échéant).
* Vous pouvez utiliser le symbole DEBUG pour vérifier le fonctionnement de l'application.
A une solution que je considère comme moins exigeante en main-d'œuvre à long terme. Comme si vous créez une chaîne de connexion avec le même nom
Sur votre contexte: base ("DBName")
Le nom de la chaîne de connexion et le catalogue initial correspondent au DBName que vous avez spécifié et vous n'avez pas besoin d'entrer le nom de la chaîne de connexion à chaque fois.