Il codice nel mio migrazione iniziale è stato il seguenteEF migrazione: Errore durante il cambiamento un campo indicizzato al annullabile
CreateTable( "dbo.Sites", c => new { Id = c.Int(nullable: false, identity: true), Description = c.String(maxLength: 450) }) .PrimaryKey(t => t.Id);
modo che il campo Descrizione sarebbe unico ho aggiunto quanto segue alla fine del UP metodo
CreateIndex ("dbo.Sites", "Descrizione", univoco: true);
Successivamente ho deciso di rendere obbligatorio il campo Descrizione.
La nuova migrazione genera il seguente modifica
AlterColumn ("dbo.Sites", "Descrizione", c => c.String (nullable: false, maxLength: 450));
Tuttavia quando questo cambiamento tenta di eseguire ottengo un errore
ALTER TABLE ALTER COLUMN Descrizione riuscita perché uno o più oggetti accedono a questa colonna.
sono stato in grado di isolare la linea di SQL utilizzando il profiler, come
ALTER TABLE [dbo]. [Siti] ALTER colonna [Descrizione] nvarchar NOT NULL
che dà me il seguente errore quando l'eseguo in Management Studio
Msg 5074, livello 16, stato 1, riga 1 l'indice ' IX_Descrizione 'dipende dalla colonna' Descrizione '. messaggio 4922, livello 16, stato 9, riga 1 ALTER TABLE ALTER COLUMN Descrizione non riuscita perché uno o più oggetti accedono a questa colonna.
Come posso ottenere il codice di migrazione per eliminare l'indice, quindi modificare modificare la colonna e quindi ricostruire l'indice?
Sto usando SQL Server 2008 R2
L'utilizzo dell'indice univoco con colonna nullable è strano. Null ha valore come qualsiasi altro, quindi solo un record UNO sarà in grado di avere un valore Null altrimenti riceverai una violazione del vincolo univoco. –
I though NULL! = NULL ma non penso di averlo provato da solo di recente - ne vale la pena controllare. – Mark
Voglio vuoto per essere un'opzione valida nella casella combinata. Dovrei avere Null o una stringa vuota per quello? –