c# tutorial Le code de cadre d'entité d'abord-comment exécuter Update-Database pour la base de données de production




entity framework tutorial français (3)

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 très bien avec ma machine locale, mais comment puis-je faire fonctionner cela pour les données de production?

Donc, si je fais une modification de mon application et que j'exécute le 'publish' via Visual Studio cela fonctionne bien pour le code, mais comment exécuter la commande 'Update-Database' pour les données de production.

J'espère que cette question a du sens ...

Merci,


Voir Utilisation des migrations d'Entity Framework (code en premier) en production pour que votre application mette à jour automatiquement la base de données lors de l'initialisation d'Entity Framework.

Maintenant, si vous préférez avoir un contrôle manuel sur la migration, vous pouvez utiliser l'argument -Script de la commande Update-Database sur votre machine de développement 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 Obtenir un script SQL)


Voulez-vous simplement mettre à jour automatiquement la base de données à la dernière version quand et où votre application s'exécute (développement et production)?

Cela peut ne pas être 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. S'il vous plaît voir cette réponse: https://.com/a/15718190/2279059 . Si vous ne tenez pas compte de cet avertissement, lisez la suite.

Ajoutez ce qui suit au 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 il fait essentiellement la même chose que le code suivant:

Database.SetInitializer(new MigrateDatabaseToLatestVersion<MyContext, Migrations.Configuration>());

Si vous n'avez pas de chance avec web.config , vous pouvez aussi essayer de mettre ce code dans Global.asax . Personnellement, je préfère la configuration au code.

Si vous voulez que votre fichier de configuration ait l'air plus propre, vous pouvez également dériver une nouvelle classe à partir de la classe MigrateDatabaseToLatestVersion du modèle. Vous n'avez donc pas besoin d'utiliser la syntaxe cryptique pour passer les arguments de type dans votre fichier web.cofig :

public class MyDatabaseInitializer : public MigrateDatabaseToLatestVersion<MyContext, Migrations.Configuration> {}

Qu'est-ce que cela fait est de définir un initialiseur de base de données qui met automatiquement à jour la base de données à la dernière version.

(Source et plus de détails: http://www.ralphlavelle.net/2012/09/entity-framework-code-first-webconfig.html )


Pour ajouter à ce que @David a déjà dit ...

Personnellement, je ne fais pas confiance aux automatic updates à automatic updates dans les scénarios 'live', et je préfère toujours l'administration manuelle des bases de données (ie il y a un problème avec les permissions nécessaires pour créer ou modifier Db). Les migrations que nous avons vues sont assez solides quand il s'agit de synchroniser (en fait, la seule façon de les "délier" est de supprimer le Db et de forcer la mise à jour full / fresh).

Voici un article que j'ai script il y a un instant sur la façon de script et de synchronize database / code et de l'adapter aux scénarios de déploiement (et quand des problèmes surviennent). Cela ne s'applique pas à vous (encore) mais à garder à l'esprit.

MVC3 et Code First Migrations - "Le modèle de sauvegarde du contexte 'blah' a changé depuis la création de la base de données"







entity-framework