的代碼在我最初的移民是如下EF遷移:錯誤更改索引字段可空
CreateTable( "dbo.Sites", c => new { Id = c.Int(nullable: false, identity: true), Description = c.String(maxLength: 450) }) .PrimaryKey(t => t.Id);
這樣描述字段將是獨一無二的,我添加以下內容的結束UP方法
CreateIndex(「dbo.Sites」,「Description」,unique:true);
後來我決定讓描述字段爲必填項。
新的遷移產生以下改變
AlterColumn( 「dbo.Sites」, 「描述」 中,c => c.String(可爲空的:假的,最大長度:450));
然而,當這種變化嘗試運行我得到一個錯誤
ALTER TABLE ALTER COLUMN說明失敗,因爲一個或多個對象訪問此列。
我能夠使用分析器的SQL線隔離,如
ALTER TABLE [DBO]。[站點] ALTER COLUMN [說明]爲nvarchar NOT NULL
其中給出我在管理工作室中運行時出現以下錯誤
消息5074級別16狀態1行1 索引' IX_Description'依賴於'Description'列。 消息4922,級別16,狀態9,行1 ALTER TABLE ALTER COLUMN說明失敗,因爲一個或多個對象訪問此列。
如何獲得遷移代碼以刪除索引,然後更改alter column然後重新構建索引?
我正在使用SQL Server 2008 R2
使用帶有空列的唯一索引很奇怪。空值是任何其他值,所以只有一條記錄將能夠具有空值,否則您將收到唯一的約束違規。 –
雖然NULL!= NULL,但不要以爲我最近自己嘗試過 - 值得檢查一下。 – Mark
我希望空白是組合框中的有效選項。我應該有空還是空字符串? –