Пусть столбец обнуляется. Создайте триггер, который запускается вместо вставки, и, если задано значение null, установите для него текущую дату. Предоставьте частичный метод для метода изменения свойства для этого поля, которое выдает исключение, если для поля предпринимается попытка установить значение NULL.
Это не заставит вас указывать значение, но если вы попытаетесь установить его, вы не сможете его обнулить. Триггер будет предоставлять значение по умолчанию при вставке, и при любом обновлении должно гарантироваться, что оно будет иметь значение, так как метод изменения свойства не позволит ему установить значение NULL.
РЕДАКТИРОВАТЬ : Если вы хотите избежать триггера и не обращаете внимания на потенциальную (вероятно небольшую) разницу между фактическим временем вставки и значением столбца, вы можете реализовать частичный метод создал и установил поле поддержки для даты напрямую. Не используя свойство, я думаю, вы избежите ложных обновлений, поскольку событие изменения свойства не будет инициировано. Вы должны проверить это, чтобы увидеть, работает ли он так, как вы хотите. Одним из преимуществ этого является то, что он может быть полностью протестирован модулем без использования базы данных.
FWIW, я обычно просто иду по автоматически сгенерированному маршруту. У меня нет сценариев, в которых я бы вручную устанавливал CreatedDate для записи. Я мог бы зайти и обновить его вручную в чрезвычайной ситуации, но я даже не помню, когда мне пришлось это делать.