Entity Framework 6 SetInitializer DbContext ne fonctionne pas pour SQL Server Express et SQL Server Compact

J'ai un problème avec la création d'une nouvelle database chaque fois que mon application démarre.

J'ai lu cet article Entity Framework Database.SetInitializer ne fonctionnait tout simplement pas , mais cela n'a pas aidé.

Voici mon code:

public DatabaseContext(DatabaseType type) : base("name=" + type) { Database.SetInitializer(new DropCreateDatabaseAlways<DatabaseContext>()); } 

et j'appelle

 Database.Initialize(true); 

Peu importe si vrai ou faux, les deux ne fonctionne pas.

Plus tard dans mon application, je travaille également avec la database, de sorte que l'initialiseur doit être appelé.

J'ouvre le context via "using". Et même si je fais une transaction comme celle-ci:

 database.RoleRepository.Insert(new Role()); database.Save(); 

ça ne marche pas.

La chose amusante est que cela fonctionne avec LocalDB mais pas avec Compact Edition ou SQL Server Express. Je travaille avec les trois bases de données dans la même application (le projet l'exige), peut-être que c'est l'erreur? LocalDB est appelé en premier.

Voici mes strings de connection:

 <connectionSsortingngs> <add name="LocalDB" connectionSsortingng="Data Source=(LocalDb)\v11.0;Initial Catalog=Database.DatabaseContext;integrated security=True;MultipleActiveResultSets=True" providerName="System.Data.SqlClient"/> <add name="CompactEdition" connectionSsortingng="Data Source=CompactEditionDB.sdf" providerName="System.Data.SqlServerCe.4.0"/> <add name="SQLExpress" connectionSsortingng="Data Source=.\SQLEXPRESS;Initial Catalog=SQLExpressDatabase;User Instance=false;MultipleActiveResultSets=true;Integrated Security=SSPI" providerName="System.Data.SQLClient"/> </connectionSsortingngs> 

Savez-vous pourquoi cela ne fonctionne qu'avec LocalDB ?

MODIFIER:

Trouvé que cela ne fonctionne qu'avec le premier context / database, peu importe quel type. Les deux methods

 Database.SetInitializer(new DropCreateDatabaseAlways<DatabaseContext>()); Database.Initialize(true); 

sont appelés, mais il semble qu'ils ne soient pas exécutés. Comme déjà mentionné, ils ont tous le même context mais sont constitués d'objects différents.

Pourquoi seule la première database est-elle recréée?