2009-11-20 4 views
2

dynamic-update = true를 설정하면 인터셉터에서 업데이트 된 필드가 데이터베이스로 이동하는 업데이트 문에 포함되지 않습니다. false로 설정하면 타임 스탬프를 포함한 모든 열이 업데이트됩니다. 정말 동적 업데이트를 사용하고 싶습니다.NHibernate 동적 업데이트가 인터셉터에서 변경된 데이터를 업데이트하지 못합니다.

이 줄은 내 마지막 수정 된 열을 더티라고 표시했을 것이라고 생각했습니다.

auditEntity.LastModifiedTimestamp = now; 

타임 스탬프 필드를 더티로 표시하려면 저의 인터셉터에서해야 할 일이 있습니까?

답변

3

API-Doc의 답변 : "사용자가 currentState를 수정 한 경우 true를 반환합니다."

빈 기본 구현을 호출하는 대신 true를 반환하려고 했습니까?

public class Interceptor : EmptyInterceptor 
{ 
    public override Boolean OnFlushDirty(object entity, object id, object[] state, 
    object[] previousState, string[] propertyNames, IType[] types) 
    { 
    var auditEntity = entity as BaseAuditEntity; 

    if (auditEntity != null) 
    { 
     var now = DateTime.Now; 
     var index = Array.IndexOf(propertyNames, "LastModifiedTimestamp"); 
     state[index] = now; 
     auditEntity.LastModifiedTimestamp = now; 

     return true; 
    } 
    return base.OnFlushDirty(entity, id, state, previousState, propertyNames, types); 
    } 

} 
+0

이렇게했습니다. 감사! 나는 이미 그것을 시도했다고 생각했지만 최근에 많은 다른 것들을 시도해 왔습니다. – Jerry

관련 문제