Простой способ - сделать session.Refresh (entity), но это приведет к дополнительному запросу.
В Interceptor будет работать, просто кажется очень тяжелым.
http://www.nhforge.org/doc/nh/en/index.html#objectstate-interceptors (11,1)
Вы бы хотели что-то вроде:
public override bool OnFlushDirty(object entity,
object id,
object[] currentState,
object[] previousState,
string[] propertyNames,
IType[] types)
{
if(entity is DomainObjectICareAbout)
for ( int i=0; i < propertyNames.Length; i++ ) {
if ( currentState[i] is DateTime ) {
DateTime dt = (DateTime)currentState[i];
dt = dt.AddMilliseconds(-1 * dt.Millisecond);
return true;
}
}
}
return false;
}
То же самое для OnSave ().
Возможно, было бы лучше сделать это в Custom IUserType, но я не уверен, что типы пользователей предоставляют такую возможность?
Как для IUserType:
public void NullSafeSet(System.Data.IDbCommand cmd, object value, int index)
{
DateTime dt = (DateTime)value;
dt = dt.AddMilliseconds(-1 * dt.Millisecond);
NHibernateUtil.DateTime.NullSafeSet(cmd, dt, index);
}
Я не знаю ... Я не уверен, что лучший ответ. Просто даю идеи. Там может быть лучший способ!