2010-12-09 3 views
0

.Net과 NHibernate를 사용하여 MySql-Database 테이블에서 Data를 그립니다. 여기에는 기본값 0 값 (0000-00-00 00:00:00)을 갖는 MySQL-Timestamp 데이터 형식의 열이 포함됩니다.제로 MySQL-Timestamp 값을받는 방법

나는 내 클래스의 DateTime 멤버에 열을 매핑합니다. 기준을 만들 때 NHibernate는 잘못된 형식에 대해 불평합니다. 0 값을 유효한 값으로 변환하고 싶습니다. 이것이 가능한가?

업데이트 : 매핑하려는 클래스에 IUserType 인터페이스를 구현하려고했습니다. 그러나 이것은 아직 도움이되지 않는 것 같습니다. 이 모양은 다음과 같습니다.

public virtual object NullSafeGet(System.Data.IDataReader rs, string[] names, object owner) 
    { 
     if (rs.IsDBNull(rs.GetOrdinal(names[6])) || rs.GetDateTime(6) < DateTime.MinValue) return DateTime.MinValue; 
     else 
      return rs.GetDateTime(6); 
    } 

이 정보는 정확하지 않습니다. (문제를 일으키는 날짜 시간 값은 클래스의 6 속성입니다.) 내 프로그램이이 코드를 나누기

: 당신이 뭔가가있는 경우

ISession session = GetCurrentSession(); 
return session.CreateCriteria<ClassToMap>().List<ClassToMap>(); 

답변

0

것은 당신이 MySQL을에 매핑하고 싶습니다 결국, 당신은 당신의 SELECT 성명에서 당신이

SELECT IF(field!='0000-00-00 00:00:00',field,'2010-01-01 00:00:00') 
FROM table 

필링 같은 것을 할 수있는 쿼리의 컨트롤을 가지고있는 field, table, 등, 2010-01-01 00:00:00 내가 매핑 것입니다 제로 값을.

+0

아니오, 저는 SQL을 수행하는 NHibernate를 사용합니다. – AGuyCalledGerald

0

당신은 IUserType을 구현하고 원하는 방식으로 MySql 반환 데이터를 관리 할 수 ​​있습니다.

// represents conversion on load-from-db operations: 
    public object NullSafeGet(IDataReader rs, string[] names, object owner) 
    { 
     //Custom Logic 
    } 
+0

매핑하려는 클래스에 IUserType 인터페이스를 구현하려고했습니다. 그러나 이것은 아직 도움이되지 않는 것 같습니다. 내 프로그램이이 코드에서 중단됩니다 : ISession session = GetCurrentSession(); return session.CreateCriteria () .List (); <- here – AGuyCalledGerald

+0

매핑 할 클래스에 Iusertype을 구현할 필요가 없습니다. – DanielGomez

+0

죄송합니다. 매핑 할 클래스에 Iusertype을 구현할 필요가 없습니다. Iusertype을 구현하는 public 클래스를 만든 다음 생성 한 형식으로 타임 스탬프 값을 포함하는 속성을지도에 선언해야합니다. – DanielGomez