同じSQL Server 2012データベースに書き込む独自のDbContextクラスを持つ2つのプロジェクトがあります。コードデフォルトのスキーマを設定すると複数のDbContextを持つ最初の移行が失敗する
DbContextクラスの形式は次のとおりです。
コードファーストの移行を使用してpublic class BlogDbContext : DbContext
{
public BlogDbContext()
: base("CodeFirstTestConnString")
{
}
public BlogDbContext(string connectionString)
: base(connectionString)
{
}
public DbSet<Blog> Blogs { get; set; }
public DbSet<Post> Posts { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
//modelBuilder.HasDefaultSchema("blogtest");
}
}
私はプロジェクトごとに次のように実行することにより、(既存の)データベースに私のテーブルを作成することができます
Enable-Migrations
Add-Migration Initial
Update-Database
これをしかし、上記のコメント行を追加してデフォルトスキーマを設定すると(両方のプロジェクトで同じスキーマが使用されます)、Update-Databaseは2番目のプロジェクトでエラーが発生します。「既に__MigrationHistoryという名前のオブジェクトがデータベース "。
"Update-Database -Verbose"を実行すると、デフォルトスキーマが変更された場合、2番目のプロジェクトに対して「CREATE TABLE [blogtest]。[__ MigrationHistory]」が実行されていることがわかります。デフォルトのスキーマを変更しないと、初めてこのテーブルを作成しようとします。
これはEntity Frameworkのバグですか、何か不足していますか?