Używam EF6 do przechowywania wystąpień klasy report
w mojej bazie danych. Baza danych zawiera już dane. Powiedzieć chciałem dodać obiekt do report
,Pierwsza migracja po kodzie: jak ustawić domyślną wartość dla nowej właściwości?
public class report {
// ... some previous properties
// ... new property:
public string newProperty{ get; set; }
}
Teraz jeśli pójdę do konsoli pakiet kierownika i wykonać
add-migration Report-added-newProperty
update-database
dostanę plik w folderze „/ migracje” dodanie newProperty
kolumna do stołu. To działa dobrze. Jednak w starszych wpisach w bazie danych wartość dla newProperty
jest teraz pustym ciągiem. Ale chcę, żeby to było, na przykład, "stare".
Moje pytanie brzmi: Jak ustawić domyślne wartości dla nowych właściwości (dowolnego typu) w skrypcie migracji (lub w innym miejscu)?
Byłoby miło, gdyby to właściwie pociągnął w [DefaultValue (xyz)] atrybutu zdefiniowane w kodzie pierwszego modelu. Zamiast konieczności pamiętania, które kolumny potrzebują, za każdym razem, gdy dodajemy Migration; konieczności edycji po edycji wygenerowanego pliku, a następnie normalnego działania bazy danych aktualizacji w stosunku do tego zmienionego pliku. Zastanawiam się, czy można zastąpić to nieinteligentne zachowanie ... Nie mogę uwierzyć, że nikt nie poprawił tego. Z pewnością nie jestem jedynym, który jest sfrustrowany tym z domyślnym modelem AspNet Identity ... LockoutEnabled, EmailConfirmed, AccessFailedCount. wszystkie na stałe, wszystkie problemy – Barry
To nie działa z MySQL-EF. "defaultValue" nie ustawia wartości, a "defaultValueSql" tworzy wyjątek ("geometria tekstu blobowego lub kolumna json nie może mieć wartości domyślnej") ... jedynym rozwiązaniem jest użycie surowego SQL. :( – Efrain