具有多个数据库/ DbContext的EF代码优先迁移

时间:2012-05-08 23:24:10

标签: entity-framework code-first ef-migrations multiple-databases

我有两个数据库,每个数据库都有自己的dbcontext。我设置了两个迁移配置。我可以为第一个db ust fine(Add-Migration DB1_InitialCreate -ConfigurationTypeName DB1Configuration)添加一个迁移。当我尝试使用:Add-Migration DB2_InitialCreate -ConfigurationTypeName DB2Configuration使用第二个数据库创建初始迁移时,出现以下错误:

  

由于以下显式迁移未决,因此无法生成显式迁移:[201205082215265_DB1_InitialCreate]。在尝试生成新的显式迁移之前应用挂起的显式迁移。

所以我按照说法做了并用以下内容更新数据库:

Update-Database -ConfigurationTypeName DB1Configuration

然后我尝试再次为第二个数据库添加迁移,但我一直收到同样的错误。

有关如何使迁移适用于两个数据库/上下文的任何想法?

3 个答案:

答案 0 :(得分:11)

我已经能够回答我自己的问题了。我的两个配置类存在于同一个命名空间中。一旦我把他们分开,一切都会奏效。

答案 1 :(得分:7)

使用实体框架6 ,这很容易。

对于一个数据库的多个DbContexts和每个自己的数据库的多个DbContexts都是相同的过程:

Enable-Migrations -ContextTypeName <DbContext-Name-with-Namespaces> -MigrationsDirectory:<Migrations-Directory-Name>

Add-Migration -configuration <DbContext-Migrations-Configuration-Class-with-Namespaces> <Migrations-Name>

Update-Database -configuration <DbContext-Migrations-Configuration-Class-with-Namespaces> -Verbose

Source

答案 2 :(得分:5)

已经有一段时间了,但这可以更好地解决您的问题:)

Update-Database -ConfigurationTypeName "SlaveConfiguration"
                -StartupProjectName "FacturatieMVCv2.Data" -Verbose 
                -ConnectionString "connstring;" 
                -ConnectionProviderName "System.Data.SqlClient"