2010-03-17 3 views
2

테이블과 컬럼이 이미 정의되고 고정되어있는 기존 프로젝트에 NHibernate를 적용하고 있습니다.NHibernate를 만드는 방법 "업데이트 된"컬럼을 자동으로 변경합니다.

데이터베이스는 MS-SQL-2008입니다. NHibernate 2.1.2

많은 테이블에는 "ReplicationID"라는 타임 스탬프 형식의 열과 "UpdatedDT"라는 datetime 형식의 열이 있습니다.

매핑 파일의 <timestamp> 요소를 사용하여 NHibernate가 해당 열을 관리 할 수있게하는 "ReplicationID"열을 설명 할 수 있음을 이해합니다.

행이 업데이트되면 NHibernate가 UpdatedDT 열을 자동으로 업데이트 할 수 있습니까? updatedDT 속성을 타임 스탬프 형식으로 매핑 해 볼 수는 있지만 다른 부작용이있을 수 있습니다.

답변

4

데이터베이스에서 설정/업데이트 한 속성에 대해 generated = "always"를 사용할 수 있습니다. 그런 다음 NHiberante는 insert/update 문 다음에이 열의 select를 실행합니다.

예 :

<property name="CreatedOn" 
      insert="false" update="false" type="Timestamp" generated="insert" /> 
<property name="UpdatedOn" 
      insert="false" update="false" type="Timestamp" generated="always" /> 

버전/타임 스탬프 같은 작품 :

<version name="_timeStamp" generated="always" unsaved-value="null" type="BinaryBlob" access="field"> 
     <column name="TimeStamp" not-null="false" sql-type="timestamp"/> 
</version> 
+1

<속성 이름 = "UpdatedOn"삽입 = "false"를 업데이 트 = "거짓"유형 = "타임 스탬프를 "generated ="always "/> 작동하지 않음 – BlueBird

2

당신은 이벤트 리스너를 구현해야합니다. 나는 그것을했고 매우 쉽습니다. 인터페이스를 사용하여 업데이트가 필요한 엔티티를 식별하는 것이 좋습니다. 이 포스팅은 모두를 설명

http://ayende.com/Blog/archive/2009/04/29/nhibernate-ipreupdateeventlistener-amp-ipreinserteventlistener.aspx

http://knol.google.com/k/fabio-maulo/nhibernate-chapter-11/1nr4enxv3dpeq/14#

// 유창 등록 http://ferventcoder.com/archive/2009/11/18/nhibernate-event-listener-registration-with-fluent-nhibernate.aspx

관련 문제