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.
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.
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:
Wenn es sich um eine neue Spalte handelt, die Sie über die Migration hinzufügen, können Sie dies auch tun:
%Vor%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.
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: Ссылка
Tags und Links c# entity-framework ef-code-first