2009-06-12 2 views
2

S # arpArchitecture (ASP.NET MVC 및 Fluent NHibernate)를 사용하고 있습니다. 다음과 같은 엔티티가 있습니다 :Fluent-NHibernate 및 자동으로 DateTime 지속

이 사용자 개체를 유지할 저장소 클래스의 SaveOrUpdate 메서드를 호출합니다. 그것은 작동합니다. 최신 날짜와 시간으로 LastUpdate 속성을 자동으로 유지하는 방법은 무엇입니까? 내 저장소의 SaveOrUpdate 메서드를 재정의 할 수 있습니다. 항상 LastUpdate 속성을 현재 날짜와 시간으로 설정합니다.하지만 내 엔터티에서 변경된 사항이 없으면 NHibernate가 내 개체를 다시 유지할 것으로 생각하지 않기 때문에 정확하지 않습니다. DB 및이 속성의 설정을 강제로 항상 다시 유지하게됩니다.

내 엔티티에서 다른 것이 변경된 경우에만이 LastUpdate 속성 세트가 필요합니다.

답변

1

이 작업을 수행하려면 NHibernate Interceptor을 사용해야합니다. 인터셉터 구현에서 OnFlushDirty를 재정 의하여 무언가가 변경된 경우에만 (즉, 객체가 더러운 경우에만) LastUpdate 속성을 설정하십시오.

1

, 나는 자유를 받아와 MySQL/MariaDB를 사용하는 사람들을위한 솔루션을 추가합니다 :

Map(y => y.LastUpdate).CustomSqlType("timestamp").Generated.Always(); 
:

이 가

당신은 당신의 유창한 매핑 클래스에서 다음을 사용할 수 있습니다

이것은 기본값이 CURRENT_TIMESTAMP 인 MySQL TIMESTAMP 컬럼을 생성합니다. 따라서 Nhibernate가 엔티티를 플러시하기로 선택한 경우, MySQL은 컬럼이 적절하게 업데이트되었는지 확인합니다.

나는 타임 스탬프가 다른 MSSQL에서 짐승 (herehere)

과 마찬가지로이 MSSQL 잘 재생되지 않습니다 확신