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