유창한-비버 네이트 및 지속되는 DateTime을 자동으로 유지합니다
-
13-09-2019 - |
문제
나는 s#arparchitecture (asp.net mvc 및 fluent nhibernate)를 사용하고 있습니다. 다음과 같이 엔티티가 있습니다.
public class User : Entity
{
public User(){}
public User(string firstName, string lastName)
{
FirstName = firstName;
LastName = lastName;
}
public virtual string FirstName { get; set; }
public virtual string LastName { get; set; }
public virtual DateTime? LastUpdate{ get; set; }
}
이 사용자 객체를 유지할 저장소 클래스에서 SaveorupDate 메소드를 호출합니다. 효과가있다. 최신 날짜와 시간으로 Lastupdate 속성을 자동으로 어떻게 유지합니까? 나는 항상 마지막 날짜 및 시간에 최후의 속성을 설정함으로써 저장소에서 SaveorupDate 메소드를 무시할 수 있지만, 내 엔티티에 아무런 변화가 없으면 nhibernate가 내 객체를 DB 와이 속성의 설정을 강요하면 항상 지속됩니다.
내 엔티티에서 다른 것이 바뀌면이 Lastupdate 속성 세트 만 원합니다.
해결책 3
할거다 다른 stackoverflow 질문을 가리 키십시오 내 질문에 대답한다고 생각합니다.
다른 팁
당신은 an을 사용해야합니다 NHibernate 인터셉터 이것을 달성하기 위해. 인터셉터 구현에서 Onflushdirty를 재정의하여 무언가가 변경된 경우에만 Lastupdate 속성을 설정하십시오 (즉, 객체가 더럽습니다).
데이터베이스 유형을 지정하지 않았으므로 MySQL / Mariadb를 사용하는 사람들을위한 자유를 가져 와서 다음을 추가합니다.
유창한 매핑 클래스에서 다음을 사용할 수 있습니다.
Map(y => y.LastUpdate).CustomSqlType("timestamp").Generated.Always();
이렇게하면 기본값이 current_timestamp의 MySQL 타임 스탬프 열을 만듭니다. 따라서 nhibernate가 엔티티를 플러시하기로 선택하면 MySQL이 열이 올바르게 업데이트되었는지 확인합니다.
타임 스탬프가 MSSQL의 다른 짐승이기 때문에 이것이 MSSQL과 잘 어울리지 않는다고 확신합니다.여기 그리고 여기)