Ich verwende EF6 zum Speichern von Instanzen der report
Klasse in meiner Datenbank. Die Datenbank enthält bereits Daten. Sagen wir, ich wollte eine Immobilie zu report
,Code-First Migration: Wie setze ich den Standardwert für eine neue Eigenschaft?
public class report {
// ... some previous properties
// ... new property:
public string newProperty{ get; set; }
}
Jetzt hinzufügen, wenn ich auf das Paket-Manager-Konsole gehen und
add-migration Report-added-newProperty
update-database
ausführen ich Ordner eine Datei in der ‚/ Migrations‘ erhalten Hinzufügen eines newProperty
Spalte zum Tisch. Das funktioniert gut. Bei den älteren Einträgen in der Datenbank ist der Wert für newProperty
jetzt jedoch eine leere Zeichenfolge. Aber ich möchte, dass es z. B. "alt" ist.
Also meine Frage ist: Wie setze ich Standardwerte für neue Eigenschaften (jeden Typs) im Migrationsskript (oder anderswo)?
Wäre schön, wenn es richtig in dem [Default (xyz)] Attribute gezogen, wie in dem Code ersten Modell definiert. Anstatt sich daran erinnern zu müssen, welche Spalten bei jeder Add-Migration-Aktion benötigt werden. Nachbearbeitung der erzeugten Datei, gefolgt von der normalen Ausführung der Update-Datenbank gegen diese geänderte Datei. Ich frage mich, ob es möglich ist, dieses unintelligente Verhalten zu überschreiben .... Ich kann nicht glauben, dass niemand dies verbessert hat. Sicher bin ich nicht der Einzige, der mit dem AspNet Identity-Standardmodell frustriert ist ... LockoutEnabled, EmailConfirmed, AccessFailedCount. Alle hardcoded, alle Probleme – Barry
Dies scheint nicht mit MySQL-EF zu arbeiten. 'defaultValue' setzt den Wert nicht und 'defaultValueSql' erzeugt eine Ausnahme ("Blob-Text-Geometrie oder json-Spalte kann keinen Standardwert haben") ... die einzige verbleibende Lösung ist die Verwendung von Raw SQL. :( – Efrain