8

我有两个数据库,每个都有自己的dbcontext。我已经设置了两个迁移配置。我可以为第一个数据库添加一个优化迁移(Add-Migration DB1_InitialCreate -ConfigurationTypeName DB1Configuration)。当我尝试创建与使用第二dB的初始迁移:Add-Migration DB2_InitialCreate -ConfigurationTypeName DB2Configuration,我得到以下错误:具有多个数据库/ DbContext的EF代码首次迁移

Unable to generate an explicit migration because the following explicit migrations are pending: [201205082215265_DB1_InitialCreate]. Apply the pending explicit migrations before attempting to generate a new explicit migration.

所以我做什么它说,并更新数据库:

Update-Database -ConfigurationTypeName DB1Configuration 

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

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

回答

10

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

+0

我有两个DbContexts在相同的命名空间中,但不要解决这个问题。使用EF 5.0 RTM。 – angularsen

+1

+1 - 我还必须通过命名空间(EF 5.0)将它们分开。 – rufo

+2

我也必须通过名称空间(EF 6.x)将它们分开;对于Update-Database -ConfigurationTypeName nameOfConfiguration来说是不够的 – subsci

5

这已经有一段时间,但这可能是一个更好的回答您的问题:)

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

随着实体框架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

相关问题