2011-11-01 59 views
1

我遇到了一個問題,試圖從MySql數據庫請求數據。Nhibernate MySql DateTime問題c#

例如: 我有一個表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

我強烈建議使用[NHProf](http://nhprof.com/)來幫助使用NHibernate調試項目。它提供了許多附加信息來幫助您發現問題。 –

+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)));