Самое простое решение для достижения этой цели - на уровне базы данных:
- Создайте новый столбец в таблице для хранения значения
DateTime
. - Создание триггера базы данных для установки столбца для каждой вставки или обновления таблицы.
- Сопоставление нового столбца как свойства в вашей сущности
- Установка
StoreGeneratedPattern
для новогосвойство Computed
, поэтому значение, сгенерированное в базе данных, корректно обновляется для присоединенной сущности после каждой вставки или обновления.
Если вам не нравится триггер, вы должны сделать это вручную в переопределенном SaveChangesгде вы найдете все объекты, которые будут вставлены или обновлены, и установите столбец:
public override int SaveChanges(SaveOptions options)
{
var entities = ObjectStateManger.GetObjectStateEntries(EntityState.Added | EntityState.Modified)
.Select(e => e.Entity)
.OfType<YourEntityType>();
DateTime now = DateTime.Now;
foreach(var entity in entities)
{
entity.Updated = now;
}
return base.SaveChanges(options);
}