Voulez-vous simplement automatiquement mettre à jour la base de données avec la dernière version au moment et à l'endroit où votre application fonctionne (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 où la migration manuelle de la ou des bases de données n'est pas réalisable. Veuillez consulter 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 revient à faire 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
Dans ce cas, vous pouvez également essayer de placer ce code dans le fichier Global.asax
. Personnellement, je préfère la configuration au code.
Si vous souhaitez que votre fichier de configuration soit plus propre, vous pouvez également dériver une nouvelle classe à partir du modèle MigrateDatabaseToLatestVersion
afin que vous n'ayez pas à utiliser la syntaxe cryptique pour passer des arguments de type dans votre classe web.cofig
fichier :
public class MyDatabaseInitializer : public MigrateDatabaseToLatestVersion<MyContext, Migrations.Configuration> {}
Cela permet de définir un initialisateur de base de données qui met automatiquement à jour la base de données avec la dernière version.
(Source et détails supplémentaires : Entity Framework Code First Initialisation de Web.config )