2 つのデータベースがあります。dbcontext の 1 つに変更を加える (新しい DbSet を追加する) と、Web アプリケーションを実行するときに正しいデータベースに変更が自動的に適用されます。したがって、新しいテーブルを追加する必要があります。したがって、2 つの構成クラスを追加しました。データベース/コンテキストごとに 1 つ。
ただし、以下のような初期化子を使用すると、変更は常に 2 番目のコンテキスト/データベースに適用されます。これは、構成された最新の初期化子であるためです。
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 コマンドを使用して移行をスキャフォールディングしました。
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");
}
}
私の質問は、エンティティ フレームワークは初期化子を使用した複数のコンテキストの移行をサポートしていますか? そうでない場合は、移行を複数のコンテキストで処理できる場合に便利な機能です。