간단한 방법은 session.Refresh (엔터티)를 수행하는 것입니다.하지만 이로 인해 추가 쿼리가 생성됩니다.
인터셉터가 작동하면 매우 무거워 보입니다. 당신은 뭔가 싶어
http://www.nhforge.org/doc/nh/en/index.html#objectstate-interceptors (11.1) 된 OnSave에 대한 일의
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;
}
같은 종류의().
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);
}
난 몰라 ... 난 최선의 대답은 확실하지 않다. 그냥 아이디어를 제공합니다. 더 좋은 방법이있을 수 있습니다!
저는 데이터베이스에 다시 도달하더라도 session.Refresh를 사용하려고합니다. 이것은 이미 유용함이 입증되었습니다. 연결 문자열에 문자 세트를 설정하지 않고 유니 코드 문자를 잃어 버렸습니다.). – Andrew
Yah, Session.Refresh()와 같은 질문을 다시 읽는 것이 올바른 대답이었습니다. – anonymous