Nhibernate MySql DateTime выпуск c # - PullRequest
1 голос
/ 01 ноября 2011

Я столкнулся с проблемой при попытке запросить данные из базы данных MySql.

Например: у меня есть таблица user_data, которая содержит множество полей, включая user_id, который является строкой, а день, который является датой.При попытке запросить данные с помощью созданного вручную 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 записей.

Любая помощь будет оценена.

Заранее спасибо.

Дмитрий

Ответы [ 3 ]

0 голосов
/ 01 ноября 2011

Это происходит потому, что NHibernate помещает время в запрос. Вы можете сделать что-то вроде:

criteria.Add(Restrictions.Between("Day", day, day.AddDays(1).AddSeconds(-1)));
0 голосов
/ 30 ноября 2011

Спасибо всем, кто пытался мне помочь!

К сожалению, мне пришлось использовать необработанный SQL-запрос: использовать CreateSQLQuery, а затем добавить скаляры для каждого поля.

0 голосов
/ 01 ноября 2011

Я думаю, что часть критериев не совсем верна.Также день не определен.вместо этого вы определили 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>();   
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...