Der Code in meiner ersten Migration auf NULL festlegbare war wie folgtEF Migration: Fehler ein indiziertes Feld Ändern
CreateTable( "dbo.Sites", c => new { Id = c.Int(nullable: false, identity: true), Description = c.String(maxLength: 450) }) .PrimaryKey(t => t.Id);
Damit das Feld Beschreibung eindeutig sein würde ich addierten die folgenden bis zum Ende des UP-Methode
CreateIndex ("dbo.Sites", "Beschreibung", unique: true);
Später habe ich mich entschieden, das Feld Beschreibung erforderlich zu machen.
Die neue Migration erzeugt die folgende Änderung
AlterColumn ("dbo.Sites", "Beschreibung", c => c.String (NULL festlegbaren: false, maxLength: 450));
jedoch, wenn diese Änderung ich einen Fehler zu laufen versucht
ALTER TABLE ALTER COLUMN Beschreibung schlug fehl, weil ein oder mehrere Objekte in dieser Spalte zugreifen.
konnte ich die SQL-Linie mit dem Profiler isolieren, wie
ALTER TABLE [dbo]. [Sites] COLUMN ALTE [Beschreibung] nvarchar NOT NULL
Welche gibt mir den folgenden Fehler, wenn ich es in Management Studio ausführen
Msg 5074, Ebene 16, Zustand 1, Linie 1 Der Index ' IX_Description 'ist abhängig von der Spalte' Description '. Msg 4922, Ebene 16, Status 9, Zeile 1 ALTER TABLE ALTER COLUMN Beschreibung fehlgeschlagen, da ein oder mehrere Objekte auf diese Spalte zugreifen.
Wie kann ich die Migrationscode erhalten den Index zu löschen, dann ändern ändern Sie die Spalte und dann den Index neu bauen?
Ich verwende SQL Server 2008 R2
Die Verwendung von eindeutigen Index mit Nullable Spalte ist seltsam. Null ist ein Wert wie jeder andere, so dass nur EINER Datensatz Nullwert haben kann, sonst erhalten Sie eine eindeutige Integritätsverletzung. –
Ich dachte NULL! = NULL, aber glaube nicht, dass ich es selbst vor kurzem ausprobiert habe - es lohnt sich, das zu überprüfen. – Mark
Ich möchte leere in der Kombinationsfeld eine gültige Option sein. Soll ich Null oder eine leere Zeichenfolge dafür haben? –