Нет причин, по которым я могу придумать, что это невозможно сделать с помощью атрибута. Это может быть в отставании Microsoft. Кто знает.
Лучшее решение, которое я нашел, - это использовать параметр defaultValueSql в первой миграции кода.
CreateTable(
"dbo.SomeTable",
c => new
{
TheDateField = c.DateTime(defaultValueSql: "GETDATE()")
});
Мне не нравится часто упоминаемое решение его установки в конструкторе класса сущности, потому что если что-то кроме Entity Framework вставит запись в эту таблицу, поле даты не получит значение по умолчанию. И идея использования триггера для обработки этого случая мне просто кажется неправильной.