Myślę, że możesz to zrobić za pomocąStoreGeneratedPattern = Identity
(ustawionego w oknie właściwości projektanta modelu).
Nie przypuszczałbym, że tak to zrobić, ale próbując to rozgryźć, zauważyłem, że niektóre z moich kolumn z datami już się ustawiały, CURRENT_TIMESTAMP()
a inne nie. Po sprawdzeniu modelu widzę, że jedyną różnicą między dwiema kolumnami oprócz nazwy jest to, że ta, która otrzymuje wartość domyślną, ma StoreGeneratedPattern
ustawioną wartośćIdentity
.
Nie spodziewałbym się, że tak będzie, ale czytając opis, ma to sens:
Określa, czy odpowiednia kolumna w bazie danych zostanie automatycznie wygenerowana podczas operacji wstawiania i aktualizacji.
Ponadto, chociaż powoduje to, że kolumna bazy danych ma domyślną wartość „teraz”, wydaje mi się, że w rzeczywistości nie ustawia ona tej właściwości DateTime.Now
na POCO. Nie stanowiło to dla mnie problemu, ponieważ mam dostosowany plik .tt, który już ustawia wszystkie moje kolumny z datami na DateTime.Now
automatyczne (w rzeczywistości nie jest trudno samodzielnie zmodyfikować plik .tt, zwłaszcza jeśli masz ReSharper i otrzymujesz podświetlanie składni plugin. (nowsze wersje VS mogą już wyróżniać pliki .tt, nie jestem pewien.))
Problem dla mnie brzmiał: jak sprawić, aby kolumna bazy danych miała wartość domyślną, aby istniejące zapytania, które pomijają tę kolumnę, nadal działały? I powyższe ustawienie zadziałało.
Nie testowałem tego jeszcze, ale możliwe jest również, że ustawienie tego będzie kolidowało z ustawieniem własnej jawnej wartości. (Natknąłem się na to tylko dlatego, że EF6 Database First napisał dla mnie model w ten sposób).