Как получить ноль MySQL-Timestamp-Values - PullRequest
0 голосов
/ 09 декабря 2010

Используя .Net и NHibernate, я рисую данные из таблицы MySql-Database.Он содержит столбец типа данных MySQL-Timestamp с нулевым значением по умолчанию (0000-00-00 00:00:00).

Я сопоставляю столбец с членом DateTime моего класса.При создании критериев NHibernate жалуется на неправильный формат.Я хочу преобразовать нулевые значения в допустимые значения.Возможно ли это?

Обновление: я попытался реализовать интерфейс 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);
    }

Понятия не имею, правильно ли это.(Значение DateTime, вызывающее проблемы, является шестым свойством класса.)

Моя программа прерывается по следующему коду:

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

Ответы [ 2 ]

0 голосов
/ 10 декабря 2010

вы можете реализовать IUserType и управлять возвращаемыми данными MySql так, как вам нравится.

// represents conversion on load-from-db operations:   
    public object NullSafeGet(IDataReader rs, string[] names, object owner)
    {
        //Custom Logic
    }
0 голосов
/ 09 декабря 2010

Если у вас есть что-то, с чем вы хотите сопоставить это на стороне 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 - это то, чему я присвоил нулевые значения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...