2

Je suis assez confus avec une situation ici. J'ai besoin de se connecter à deux bases de données distinctes, l'une est une base de données SQL Server et l'autre est une base de données MySQL.Entity Framework code premières migrations pour deux bases de données différentes

J'ai les chaînes de connexion dans le fichier web.config. Je suis capable de me connecter aux serveurs et d'accéder aux données. Mais, j'ai besoin de lancer la migration d'entité sur les deux serveurs simultanément. Ou un par un, ce que je ne pense pas est possible.

Voici mon contexte de base de données:

// Database 1 
public class DatabaseContext : DbContext 
{ 
    public DatabaseContext() : base("name=OldDBContext"){ } 

    protected override void OnModelCreating(DbModelBuilder modelBuilder) { } 

    public static DatabaseContext Create() 
    { 
     return new DatabaseContext(); 
    } 

    public DbSet<User> UserModel { get; set; } 
} 

// Database 2 
public class NewDatabaseContext : DbContext 
{ 
    public NewDatabaseContext() : base("name=NewDBContext") { } 

    protected override void OnModelCreating(DbModelBuilder modelBuilder) { } 

    public static NewDatabaseContext Create() 
    { 
     return new NewDatabaseContext(); 
    } 

    public DbSet<UserData> UserDataModel { get; set; } 
} 

Au départ, je n'avais qu'une seule base de données et je courais add-migration MigrationName dans la console de gestionnaire de paquets et créerait une migration avec les changements dans la base de données. Mais maintenant, quand j'ai deux bases de données séparées, les migrations ne contiennent aucun changement dans la deuxième base de données ou celle que j'ai ajoutée plus tard.

Aidez-nous s'il vous plaît. Toute aide est grandement appréciée.

Merci

+0

Comment vous enregistrez les deux DbContexts dans votre fichier de démarrage? En outre, souhaitez-vous que les deux bases de données se mettent à jour lorsque les données sont modifiées? – KidCode

+0

@KidCode Je n'ai enregistré aucune base de données dans global.asax. quand j'avais une seule base de données, je suppose que ce n'était pas nécessaire. –

+0

@KidCode Je veux mettre à jour le schéma de base de données comme quand je fais 'update-database' ou' add-migration' mais seulement un db est mis à jour. –

Répondre

3

Essayez d'activer les migrations pour le deuxième contexte, utilisez le paramètre ContextTypeName

Enable-Migrations -EnableAutomaticMigrations -ContextTypeName 
NamespaceOfContext.NewDatabaseContext 

Il va créer la configuration séparée. Si les conflits de noms renommer le fichier se sont produites configuration dans le dossier des migrations, vous pouvez exécuter la mise à jour de base de données pour la configuration spécifique

Update-Database -ConfigurationTypeName ConfigurationName 
+0

Consultez également https://stackoverflow.com/questions/13469881/how-do-i-enable-ef-migrations-for-multiple-contexts-to-separate-databases question – Yusupov