Перехватчики могут сделать это:
http://www.nhforge.org/doc/nh/en/index.html#manipulatingdata-interceptors (9.10, ссылка не всегда работает).
Вырезать / вставить из документа:
public class AuditInterceptor : IInterceptor
{
...
public boolean OnSave(object entity,
object id,
object[] state,
string[] propertyNames,
IType[] types)
{
if ( entity is IAuditable )
{
for ( int i=0; i<propertyNames.Length; i++ )
{
if ( "CreateTimestamp" == propertyNames[i] )
{
state[i] = DateTime.Now;
return true;
}
}
}
return false;
}
}
OnFlushDirty () может использоваться для UpdateDate.
Вы хотите, чтобы каждый объект, имеющий CreatedDate / updatedDate, реализовал интерфейс, чтобы перехватчик мог проверить, должен ли он действовать (в представленном примере это IAuditable).
Редактировать
Только что заметил главу 11: Перехватчики и события. Вы можете наследовать от EmptyInterceptor, что упрощает работу, если вам нужно только переопределить некоторые методы.
Я никогда не использовал События.