2011-11-01 3 views
1

MySql 데이터베이스에서 데이터를 요청할 때 문제가 발생했습니다.Nhibernate MySql DateTime 문제 C#

예 : 나는 user_id를 포함하는 많은 필드를 포함하는 user_data 테이블을 가지고 있는데, user_id는 문자열이고 date는 날짜입니다. 수동으로 생성 된 SQL 쿼리를 사용하여 데이터를 요청하려는 시도에서 :

SELECT * FROM `alt_database`.`user_data` 
where user_id = '54sdfjghwegFDqwgf' and day = '2011-10-31'; 

모든 것을 올바르게 검색합니다. 그러나 Nhibernate를 사용하여 동일한 데이터를 요청하려는 시도에서 :

string customer_id = "54sdfjghwegFDqwgf"; 
DateTime DT = DateTime.Parse("2011-10-31"); 
var criteria = TheSession.CreateCriteria(typeof(user_data)); 
criteria.Add(Restrictions.Eq("user_id", customer_id) & Restrictions.Eq("Day", day)) 
     .List<user_data>(); 

0 레코드를 검색합니다.

도움을 주시면 감사하겠습니다.

미리 감사드립니다.

드미트리

+0

NHibernate를 사용하여 프로젝트를 디버깅하는 데 도움이되는 [NHProf] (http://nhprof.com/)를 사용하는 것이 좋습니다. 문제를 발견하는 데 도움이되는 많은 추가 정보를 제공합니다. –

+0

클래스 매핑을 포함하면 도움이됩니다. –

답변

0

나를 도우려는 모든 사람들에게 감사드립니다.

불행히도 원시 SQL 쿼리를 사용해야했습니다. CreateSQLQuery를 사용하고 각 필드에 대해 스칼라를 추가해야했습니다.

0

기준 부분이 옳지 않다고 생각합니다. 또한 정의되지 않았습니다. DT 정의가 대신 있습니다.

string customer_id = "54sdfjghwegFDqwgf"; 
DateTime day = DateTime.Parse("2011-10-31"); 
var criteria = TheSession.CreateCriteria(typeof(user_data)) 
    .Add(Restrictions.Eq("user_id", customer_id)) 
    .Add(Restrictions.Eq("Day", day)) 
    .List<user_data>(); 
+0

불행히도이 스 니펫은 동일한 결과 (0 히트)를 검색했습니다. 가장 재미있는 일 : 2010-10-13으로 날짜를 변경하면 예상되는 조회수가 검색됩니다. =) –

+0

은 자정 기준 날짜입니까? 2010-10-31 00:00:00 @Sly가 제안하는 것일 수도 있습니다. –

+0

출력 된 쿼리를 볼 수 있도록 로그 파일이나 콘솔에 생성 된 SQL을 기록하는 것이 좋습니다. –

0

NHibernate가 쿼리에 시간을두고 있기 때문에 발생합니다. 다음과 같이 할 수 있습니다.

criteria.Add(Restrictions.Between("Day", day, day.AddDays(1).AddSeconds(-1)));