web-dev-qa-db-fra.com

Comment désactiver la migration dans Entity Framework 6.0

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.

66
Michel Borges

Essaye ça:

internal sealed class Configuration : DbMigrationsConfiguration<YourContext>
{
    public Configuration()
    {
        AutomaticMigrationsEnabled = false;
    }
}

PDATE:

Vous pouvez aussi essayer ceci:

Database.SetInitializer<YourContextType>(new CreateDatabaseIfNotExists());
46
SeyedPooya Soofbaf

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 .

47
Carlos Teixeira

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);

        /// ...

    }
}
26
Aaron Sherman

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".

4
javovo

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 });                            
}
3
user663470

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).

1
Martin