我有兩個數據庫。當我更改我的一個dbcontext(添加一個新的DbSet)時,它應該在運行我的web應用程序時自動將更改應用於正確的數據庫。所以應該添加新的表格。因此我添加了兩個配置類。每個數據庫/上下文一個。實體框架自動遷移多個上下文
但是,使用下面的初始化程序,更改總是應用於第二個上下文/數據庫。因爲這是最新的初始化器配置。
Database.SetInitializer(new MigrateDatabaseToLatestVersion<DomainReadModelContext, DomainConfiguration>());
Database.SetInitializer(new MigrateDatabaseToLatestVersion<WebsiteReadModelContext, WebsiteConfiguration>());
我也試了一下在web.config
<contexts>
<context type="Domain.ReadModels.DomainReadModelContext, Domain.ReadModels">
<databaseInitializer type="System.Data.Entity.MigrateDatabaseToLatestVersion`2[[Domain.ReadModels.DomainReadModelContext, Domain.ReadModels], [Website.Migrations.Domain.DomainConfiguration, Website-WebAppMainModule, Version=1.0.0.0, Culture=neutral]], EntityFramework" />
</context>
<context type="Website.ReadModels.WebsiteReadModelContext, Website.ReadModels">
<databaseInitializer type="System.Data.Entity.MigrateDatabaseToLatestVersion`2[[Website.ReadModels.WebsiteReadModelContext, Website.ReadModels], [Website.Migrations.Website.WebsiteConfiguration, Website-WebAppMainModule, Version=1.0.0.0, Culture=neutral]], EntityFramework" />
</context>
</contexts
當通過它的作品,因爲它應該是包管理器應用更改。該表被添加到我的domaincontext數據庫。
Update-Database -config DomainConfiguration
這是因爲這不被支持或我做錯了嗎?現在它似乎只適用於註冊的最新初始化程序。
對於更新,我使用包管理器中的添加遷移命令搭建了遷移。
Add-Migration AddUniquePersonReadModelMigration -config DomainConfiguration
這對我產生了下面的類。
public partial class AddUniquePersonReadModelMigration : DbMigration
{
public override void Up()
{
CreateTable(
"UniquePersonReadModels",
c => new
{
Id = c.Guid(nullable: false, identity: true),
PersonId = c.Guid(nullable: false),
DisplayName = c.String(maxLength: 128),
})
.PrimaryKey(t => t.Id)
.Index(p => p.PersonId)
.Index(p => p.DisplayName, true);
}
public override void Down()
{
DropIndex("UniquePersonReadModels", new[] { "PersonId" });
DropIndex("UniquePersonReadModels", new[] { "DisplayName" });
DropTable("UniquePersonReadModels");
}
}
所以我的問題是實體框架是否支持使用初始值設定項的多個上下文的遷移?如果不是,那麼當遷移可以爲多個上下文處理時,這將是一個很好的功能。
我正在使用不同的數據庫。設置兩個初始值設定項,但不知何故該表被添加到我的websiteReadmodelContext,它應該被添加到domainreadmodelcontext數據庫。 –
初始化器在App_start global.asax中設置。網站首先訪問websiteReadmodelContext ...Domainreadmodelcontext僅在進行更改時才被觸發 –
然後,這聽起來像是一個錯誤。如果你可以創建一個repro,並在CodePlex上提交一個bug(http://entityframework.codeplex.com/workitem/list/basic),那很好。 –