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

sea*_*288 8 entity-framework multiple-databases code-first ef-migrations

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

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

所以我按照它说的做,并用以下内容更新数据库:

Update-Database -ConfigurationTypeName DB1Configuration
Run Code Online (Sandbox Code Playgroud)

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

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

sea*_*288 11

我已经能够回答我自己的问题了.我的两个配置类存在于同一个命名空间中.我把它们分开后,一切都运转了.

  • 我还必须通过命名空间(EF 6.x)将它们分开; Update-Database -ConfigurationTypeName nameOfConfiguration是不够的 (3认同)
  • +1 - 我还必须通过命名空间(EF 5.0)将它们分开. (2认同)

LJN*_*nDk 7

使用Entity Framework 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

资源


Nic*_*icy 5

已经有一段时间了,但这可能是你问题的更好答案:)

Update-Database -ConfigurationTypeName "SlaveConfiguration"
                -StartupProjectName "FacturatieMVCv2.Data" -Verbose 
                -ConnectionString "connstring;" 
                -ConnectionProviderName "System.Data.SqlClient"
Run Code Online (Sandbox Code Playgroud)