NHibernate는 새로운 엔티티를 저장할 때 어떻게 데이터베이스 - 디폴트 값을 사용할 수 있습니까?
public class Entity
{
public Entity() { }
public virtual int Id { get; private set; }
public virtual DateTime DateCreated { get; private set; }
}
다음 간단한 NHibernate 매핑으로 매핑되었습니다.
<class name="Entity" mutable="false">
<id name="Id">
<generator class="native">
</id>
<property name="DateCreated"/>
</class>
다음과 같은 간단한 데이터베이스 스키마 :
CREATE TABLE Entity (
Id int IDENTITY(1,1) PRIMARY KEY,
DateCreated datetime NOT NULL DEFAULT getUtcDate()
)
Entity
데이터베이스에 저장, 어떻게 당신은 그 값이 null
인 경우 DateCreated
컬럼에 대한 데이터베이스의 기본 값을 사용 NHibernate에 지시 하는가? 또한, 내가 어떻게 NHibernate에이 삽입시 DateCreated
필드의 값으로 getUtcDate()
함수의 결과를 사용하도록 지정할 수 있습니까? 내가 쉽게 엔터티 생성자에
DateCreated = DateTime.Now;
을 추가 할 수 있지만
,이 응용 프로그램 서버의 로컬 클럭을 사용하고, 나는 여러 응용 프로그램 서버와 각이있을 때 일관성을 보장하기 위해 데이터베이스의 로컬 클럭을 사용합니다 잠재적으로 동기화되지 않은 로컬 클록.
은 NHibernate에 질문에 대답 할 수 없습니다, 그러나 일반적으로 당신은 UTC로 데이터베이스에 날짜를 저장할 수 있습니다. 소스가 무엇이든간에 UTC는 모든 서버에서 동일합니다 (시계가 정확하다고 가정). –
일반적으로 예, 동의했습니다. 그 이유는 getDate() 대신 getUtcDate()를 지정했기 때문입니다. :) – iammichael