Je veux savoir comment exécuter la commande 'Update-Database' pour une base de données de production.
La base de données 'Update-Database' fonctionne correctement à partir de mon ordinateur local, mais comment puis-je l'obtenir pour les données de production?
Ainsi, si je modifie mon application et que je lance ensuite la publication dans Visual Studio, cela fonctionne bien pour le code, mais comment puis-je exécuter la commande "Update-Database" pour les données de production.
J'espère que cette question a du sens ...
Merci,
Pour ajouter ce que @ David a déjà dit ...
Personnellement, je ne fais pas confiance automatic updates
dans des scénarios "en direct", et je préfère toujours l’administration manuelle de base de données (c’est-à-dire qu’il existe un problème avec permissions
nécessaire pour créer ou modifier Db - sans parler de l’hébergement partagé, etc.) - mais de ce que j’ai déjà vu. Les migrations observées sont assez solides en ce qui concerne la synchronisation (en fait, le seul moyen de les "délier" normalement consiste à supprimer le Db et à forcer une mise à jour complète/récente).
Voici un article que j'ai publié il y a quelque temps sur la façon de script
et synchronize database / code
et adapté aux scénarios de déploiement (et lorsque des problèmes surviennent). Cela ne s'applique pas (encore) à vous, mais vous devez garder à l'esprit.
Reportez-vous à la section Migrations en production avec Entity Framework (code en premier) pour que votre application mette automatiquement à jour la base de données lors de l'initialisation de Entity Framework.
Maintenant, si vous êtes plus à l'aise avec le contrôle manuel de la migration, vous pouvez utiliser l'argument -Script de la commande Update-Database sur votre ordinateur de développeur pour générer des scripts SQL que vous pouvez ensuite exécuter sur la base de données de production.
http://msdn.Microsoft.com/en-us/data/jj591621.aspx (voir la section Obtention d'un script SQL)
Voulez-vous simplement automatiquement mettre à jour la base de données vers la dernière version quand et où votre application est exécutée (développement et production)?
Ce n'est peut-être pas une bonne idée, sauf dans des scénarios très simples où vous savez que vous pouvez faire confiance à la migration automatique et que la migration manuelle de la ou des bases de données n'est pas réalisable. Veuillez voir cette réponse: https://stackoverflow.com/a/15718190/2279059 . Si vous ne tenez pas compte de cet avertissement, lisez la suite.
Ajouter ce qui suit à web.config
:
<entityFramework>
<contexts>
<context type="MyAssembly.MyContext, MyAssembly" disableDatabaseInitialization="false">
<databaseInitializer type="System.Data.Entity.MigrateDatabaseToLatestVersion`2[[MyAssembly.MyContext, MyAssembly], [MyAssembly.Migrations.Configuration, MyAssembly]], EntityFramework" />
</context>
</contexts>
Cela peut sembler effrayant, mais cela ressemble fondamentalement au code suivant:
Database.SetInitializer(new MigrateDatabaseToLatestVersion<MyContext, Migrations.Configuration>());
Si vous n'avez pas de chance avec web.config
, alors vous pouvez aussi essayer de mettre ce code dans Global.asax
. Personnellement, je préfère la configuration au code.
Si vous souhaitez que votre fichier de configuration ait une apparence plus nette, vous pouvez également dériver une nouvelle classe du modèle MigrateDatabaseToLatestVersion
afin que vous n'ayez pas besoin de la syntaxe cryptique pour passer des arguments de type dans votre web.cofig
fichier:
public class MyDatabaseInitializer : public MigrateDatabaseToLatestVersion<MyContext, Migrations.Configuration> {}
Cela permet de définir un initialiseur de base de données qui met automatiquement à jour la base de données avec la dernière version.
(Source et plus de détails: http://www.ralphlavelle.net/2012/09/entity-framework-code-first-webconfig.html )