2

我很困惑这里的情况。我需要连接到两个单独的数据库,一个是SQL Server数据库,另一个是MySQL数据库。实体框架代码第一次迁移两个不同的数据库

我在web.config文件中有连接字符串。我能够连接到服务器并访问数据。

但是,我需要在两台服务器上同时运行实体迁移。或者一个接一个,我认为这是不可能的。

这里是我的数据库上下文:

// 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; } 
} 

最初我只有一个数据库,我总是跑在包管理器控制台add-migration MigrationName,它会创建一个在数据库中的变化的迁移。

但是现在,当我有两个单独的数据库时,迁移不会在第二个数据库或稍后添加的数据库中包含任何更改。

请帮忙。任何帮助是极大的赞赏。

谢谢

+0

你如何注册在启动文件两个DbContexts运行数据库更新?另外,你是否希望两个数据库在数据更改时更新? – KidCode

+0

@KidCode我还没有注册global.asax中的任何数据库。当我只有一个数据库时,我想这不是必须的。 –

+0

@KidCode我想更新数据库模式,就像当我执行'update-database'或'add-migration'时一样,但只有一个数据库正在更新。 –

回答

3

尝试启用第二个方面迁移,使用ContextTypeName参数

Enable-Migrations -EnableAutomaticMigrations -ContextTypeName 
NamespaceOfContext.NewDatabaseContext 

它会创建单独的配置。如果命名冲突发生重命名文件夹迁移配置文件,然后就可以进行专门配置

Update-Database -ConfigurationTypeName ConfigurationName 
+0

另请参阅https://stackoverflow.com/questions/13469881/how-do-i-enable-ef-migrations-for-multiple-contexts-to-separate-databases问题 – Yusupov

相关问题