Wie wird ein Standardwert für einen Booleschen Wert in einem Code-First-Modell festgelegt?

7

Ich habe eine vorhandene Tabelle / ein existierendes Modell, in das ich eine neue boolesche Spalte einfügen möchte. Diese Tabelle enthält bereits Hunderte von Datenzeilen und ich kann die vorhandenen Daten nicht berühren. Aber .. Diese Spalte ist NICHT NULL-fähig, daher muss ich für alle aktuell vorhandenen Zeilen den Standardwert true angeben.

%Vor%

WICHTIG:

(Das war im OP, aber die Leute schienen es zu vermissen.)

Wenn Datenbanken mit der Migration aktualisiert werden, MÜSSEN alle vorhandenen Zeilen, die diese neue Spalte erhalten, ihre Werte auf True setzen.

    
Casey Crookston 02.12.2016, 16:15
quelle

4 Antworten

15

Eine weitere Option ist das Erstellen eines Standardkonstruktors und das Festlegen der Eigenschaften mit den Standardwerten, die Sie benötigen:

%Vor%

Um die Werte auf true der vorhandenen Zeilen festzulegen, wenn Sie den Befehl Update-Database ausführen, können Sie dies in Ihrer Configuration -Klasse tun:

%Vor%

Aktualisieren

Wenn es sich um eine neue Spalte handelt, die Sie über die Migration hinzufügen, können Sie dies auch tun:

%Vor%     
octavioccl 02.12.2016, 16:45
quelle
9

Sie können die Verwendung von Feldern vermeiden und die Vorteile von Automatische Eigenschafteninitialisierung , eine neue Funktion in C # 6.

Dies wird den Standardwert auf true setzen, wenn diese Spalte zu Ihrer Datenbank hinzugefügt wird.

%Vor%     
Brandon Minnick 02.12.2016 16:48
quelle
1

Leider war ich nicht auf der Version von C #, um @Brandon Minnick's Vorschlag zu verwenden, der am einfachsten scheint. Andere Vorschläge schienen einfach zu viel Arbeit zu sein, stattdessen endete ich damit: Ссылка

    
Anthony Griggs 26.09.2017 22:47
quelle
0

Sie können einfach automatisch implementierte Eigenschaften vermeiden und den Eigenschaftswert auf true setzen, wenn Sie Ihr Objekt initialisieren.

%Vor%     
Alex 02.12.2016 16:19
quelle