私の最初の移行のコードは次のとおりです
CreateTable( "dbo.Sites", c => new { Id = c.Int(nullable: false, identity: true), Description = c.String(maxLength: 450) }) .PrimaryKey(t => t.Id);
Descriptionフィールドが一意になるように、UPメソッドの最後に次を追加しました
CreateIndex("dbo.Sites", "Description", unique: true);
後で、説明フィールドを必須にすることにしました。
新しい移行により、次の変更が生成されます
AlterColumn("dbo.Sites", "Description", c => c.String(nullable: false, maxLength: 450));
ただし、この変更を実行しようとすると、エラーが発生します
ALTER TABLE ALTER COLUMN 説明は、1 つ以上のオブジェクトがこの列にアクセスしているため失敗しました。
プロファイラーを使用して SQL 行を分離することができました。
ALTER TABLE [dbo].[Sites] ALTER COLUMN [説明] nvarchar NOT NULL
Management Studioで実行すると、次のエラーが表示されます
メッセージ 5074、レベル 16、状態 1、行 1 インデックス 'IX_Description' は列 'Description' に依存しています。メッセージ 4922、レベル 16、状態 9、行 1 ALTER TABLE ALTER COLUMN 説明は、1 つ以上のオブジェクトがこの列にアクセスしているため失敗しました。
移行コードでインデックスを削除し、列を変更してからインデックスを再構築するにはどうすればよいですか?
SQL Server 2008 R2 を使用しています