Я думаю, вы можете сделать это, используяStoreGeneratedPattern = Identity
(набор в окне конструктора свойств модели).
Я бы не догадался, как это можно сделать, но, пытаясь понять это, я заметил, что некоторые из моих столбцов дат уже имеют значения по умолчанию, CURRENT_TIMESTAMP()
а некоторые нет. Проверяя модель, я вижу, что единственное различие между двумя столбцами, помимо имени, состоит в том, что тот, который получает значение по умолчанию, StoreGeneratedPattern
установлен на Identity
.
Я бы не ожидал, что так будет, но, прочитав описание, это имеет смысл:
Определяет, будет ли автоматически создаваться соответствующий столбец в базе данных во время операций вставки и обновления.
Кроме того, хотя при этом столбец базы данных имеет значение по умолчанию «сейчас», я предполагаю, что на самом деле он не устанавливает свойство DateTime.Now
в POCO. Для меня это не было проблемой, так как у меня есть настроенный файл .tt, который уже DateTime.Now
автоматически устанавливает все мои столбцы даты (на самом деле нетрудно изменить файл .tt самостоятельно, особенно если у вас есть ReSharper и есть подсветка синтаксиса плагин. (Более новые версии VS могут уже выделять синтаксис .tt файлов, не уверен.))
Для меня проблема заключалась в следующем: как сделать столбец базы данных значением по умолчанию, чтобы существующие запросы, в которых этот столбец опущен, все равно работали? И вышеуказанная настройка сработала для этого.
Я еще не тестировал это, но также возможно, что установка этого будет мешать установке вашего собственного явного значения. (Я впервые наткнулся на это, потому что EF6 Database First написала модель для меня таким образом.)