Question

J'ai donc réussi à faire fonctionner le code en premier et cela fonctionne très bien.

Étant donné que je développe toujours l'application, la structure de la base de données n'est pas finalisée et je dois donc implémenter des migrations.

J'ai suivi le Article de blog officiel et a fait fonctionner cette commande de mise à jour.

Cependant, cela ne met à jour que 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 de mise à jour-database ne fonctionne pas là-dessus.

Ma question finale est donc: comment appliquer les migrations automatiques vers la base de données de production dont la chaîne de connexion est spécifiée au moment de l'exécution?

Était-ce utile?

La solution

Sur le type de console du gestionnaire de packages:

Get-Help Update-Database

Partie pertinente:

    Update-Database [-SourceMigration <String>] [-TargetMigration <String>] [-Script] [-Force] [-ProjectName <String>] [-StartUpProjectName <String>] [-ConfigurationTypeName <String>] [-ConnectionStringName <String>] [<Com
monParameters>]

Pour que vous puissiez faire un Update-Database -ConnectionStringName "MyConnectionString" Et cela devrait fonctionner comme un charme.

Vous avez également un MigrateDatabaseToLatestVersion Initialisateur de la base de données, si vous le définissez (via Database.SetInitializer()), lorsque vous déploiez votre application sur la production avec une chaîne de connexion appropriée, sur le premier accès à la base de données, il doit migrer automatiquement votre base de données vers la dernière version.

Je suggère de prudence cependant, toujours sauvegarder les choses.

Mise à jour

@Alexy Strakh Commentaires récents 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 Code First Migrations, compte tenu de 2 Connections.

  1. Définissez vos chaînes de connexion dans web.config (prod et dev), avec des mots de passe par défaut
  2. Demandez au système de configuration de votre application de connaître les configurations de connexion Prod et Dev, éventuellement créer des tests unitaires pour vous assurer que le bon est choisi *
  3. Employer transformation de fichier de configuration et faites-le transformer votre web.config en celui avec des valeurs de production
  4. Déployez votre colis en production (Cela devrait être le moyen le plus à la pointe)

Vous n'êtes pas censé interagir avec l'environnement de production de votre boîte de développement, mais si vous vraiment Besoin de le faire, puis faites-en une solution temporaire qui doit être retournée dès que vous avez terminé.

Une autre option consiste à utiliser simplement le web.debug.config et web.release.config et avoir un modèle central pour le principal web.config (qui serait le seul que vous vérifiez dans votre contrôle source).

Assurez-vous simplement de ne jamais vérifier les mots de passe de production ou de développement personnel (le cas échéant).

* Vous pouvez utiliser le symbole de débogage pour vérifier comment l'application est en cours d'exécution.

Autres conseils

Pourquoi les migrations EF de l'entité EF Add-Migration sont-elles une chaîne de connexion de base de données?

A une solution que je considère moins de main-d'œuvre à long terme. Comme si vous créiez 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 nom DBNE que vous avez spécifié et vous n'avez pas besoin de saisir le nom de chaîne de connexion à chaque fois.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top