J'essaie d'ignorer la migration "automatique" à l'aide de Entity Framework 6.0 rc1. Mon problème est que je ne veux pas cette fonctionnalité pour le moment et chaque fois que mon application s'exécute, je peux voir tous les journaux d'entités essayant de créer toutes les tables.
Anticipez merci.
Essaye ça:
internal sealed class Configuration : DbMigrationsConfiguration<YourContext>
{
public Configuration()
{
AutomaticMigrationsEnabled = false;
}
}
PDATE:
Vous pouvez aussi essayer ceci:
Database.SetInitializer<YourContextType>(new CreateDatabaseIfNotExists());
Vous pouvez insérer ceci dans votre section entityFramework de app.config:
<contexts>
<context type="YourNamespace.YourDbContext, YourAssemblyName" disableDatabaseInitialization="true"/>
</contexts>
Cette page msdn en dit long sur le Section de configuration d’Entity Framework .
Via web.config, voir - https://msdn.Microsoft.com/en-us/data/jj556606.aspx#Initializers
Par code (curieusement, [~ # ~] beaucoup [~ # ~] réponse plus simple)
public class MyDB : DbContext
{
public MyDB()
{
Database.SetInitializer<MyDB>(null);
}
}
ou dans Global.asax.cs
public class MvcApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
// ...
Database.SetInitializer<MyDB>(null);
/// ...
}
}
Si vous avez trouvé cette question en espérant une réponse simple pour désactiver les migrations, car vous avez tapé "Enable-Migrations" et que les choses ne fonctionnent pas comme prévu, comme si vous n'exécutiez pas la méthode de départ que vous pensiez être exécutée, recherchez dans la solution. Explorateur et supprimez le dossier Migrations. Cela empêchera le code d'examiner la configuration des migrations pour trouver le code d'initialisation. Pour récupérer le dossier Migrations, exécutez à nouveau "Enable-Migrations".
L'erreur que je faisais a été d'appeler Database.SetInitializer (null); trop tard (après l'initialisation du contexte). Le meilleur moyen de vous assurer que les migrations sont désactivées consiste à effectuer l'appel ci-dessus pour tous vos contextes au démarrage de votre application. Je privilégie cette approche plutôt que de la définir dans le fichier app.config afin de pouvoir utiliser mon conteneur pour localiser mes contextes, puis créer un appel.
var migrationsMethod = typeof(System.Data.Entity.Database).GetMethod("SetInitializer");
foreach (var contextType in allContextTypes)
{
migrationsMethod.MakeGenericMethod(contextType).Invoke(null, new object[] { null });
}
La désactivation de la migration automatique peut également être configurée lors de l'appel de la enable-migrations
commande (qui crée la classe Configuration
, en utilisant le paramètre EnableAutomaticMigration
avec une valeur de false
:
enable-migrations -EnableAutomaticMigration:$false -ContextTypeName FullyQualifiedContextName
Le va créer une classe Configuration
qui définit la propriété AutomaticMigrationsEnabled
sur false, comme dans la réponse ci-dessus.
Le paramètre EnableAutomaticMigration
du enable-migrations
La commande est mentionnée dans l'article this de la page Didacticiel Entity Framework (cependant, ils l'utilisent avec true
qui semble être la valeur par défaut).