エラーが発生しました - 名前が 'IX_address_unique'のインデックスまたは統計情報がすでに 'dbo.Addresses'テーブルに存在するため、操作が失敗しました。問題のインデックスは、私がここでは、コード最初のEFバージョン6で作成した複合インデックスは、DbContextクラスのコードです -テーブルエラーエンティティフレームワークコードの最初の移行にインデックスが既に存在しています
// create unique address composite index based on properties // address1 property modelBuilder.Entity<Address>().Property(t => t.address1) .HasMaxLength(250) .IsRequired() .HasUniqueIndexAnnotation("IX_address_unique", 0); // city property modelBuilder.Entity<Address>().Property(t => t.city) .HasMaxLength(50) .IsRequired() .HasUniqueIndexAnnotation("IX_address_unique", 1); // state property modelBuilder.Entity<Address>().Property(t => t.state) .HasMaxLength(50) .IsRequired() .HasUniqueIndexAnnotation("IX_address_unique", 2); // postal code property modelBuilder.Entity<Address>().Property(t => t.postal_code) .HasMaxLength(20) .IsRequired() .HasUniqueIndexAnnotation("IX_address_unique", 3);
コマンドの追加・マイグレーションCreateUniqueIndexAddressesTableを実行するとき、これは、次のDbMigrationを作成します。
public partial class CreateUniqueIndexAddressesTable : DbMigration
{
public override void Up()
{
AlterColumn("dbo.Addresses", "address1", c => c.String(nullable: false, maxLength: 250));
AlterColumn("dbo.Addresses", "address2", c => c.String(maxLength: 250));
AlterColumn("dbo.Addresses", "city", c => c.String(nullable: false, maxLength: 50));
AlterColumn("dbo.Addresses", "state", c => c.String(nullable: false, maxLength: 50));
AlterColumn("dbo.Addresses", "postal_code", c => c.String(nullable: false, maxLength: 20));
CreateIndex("dbo.Addresses", new[] { "address1", "city", "state", "postal_code" }, unique: true, name: "IX_address_unique");
}
public override void Down()
{
DropIndex("dbo.Addresses", "IX_address_unique");
AlterColumn("dbo.Addresses", "postal_code", c => c.String());
AlterColumn("dbo.Addresses", "state", c => c.String());
AlterColumn("dbo.Addresses", "city", c => c.String());
AlterColumn("dbo.Addresses", "address2", c => c.String());
AlterColumn("dbo.Addresses", "address1", c => c.String());
}
}
あなたは、インデックスを削除してから、そこに任意のデータベースの移行があり、すべてがうまく(エラーなし)動作するかどうか期待通りにセットアップが実行されるコードをexcersizeしかし場合は、DEV環境に(データベース全体を削除した場合もちろん)空のデータベースを再作成すると、このエラーが再度表示されます。なぜこのエラーは最初に起こっていますか?
残念ながら、それは私にとってはうまくいきませんでした。代わりにデータ注釈を使用してみてください。 –