Время и Нибернат - PullRequest
       5

Время и Нибернат

6 голосов
/ 03 июня 2009

привет, я получил приложение, которое использует nhibernate как orm, мне нужно хранить данные, которые представляют время, Какой лучший способ сделать это?

nhibenate Не знаю, чтобы преобразовать поле времени из дБ в интервал времени, только строку.

Ответы [ 2 ]

7 голосов
/ 03 июня 2009

NHibernate поддерживает DateTime, Ticks, TimeSpan и Timestamp . Убедитесь, что вы явно указываете тип для элемента отображения, поскольку разные типы времени имеют разную семантику, поэтому догадки NHibernate могут быть неверными.

Если у вас есть проблемы, которые все еще возникают, измените свое сообщение, включив в него соответствующие части вашей сущности, файл сопоставления и реальную проблему, с которой вы столкнулись.

Edit:

Например, со следующим классом для TimeSpan:

public class MyClass
{
    // Other properties
    // ...
    // ...
    public virtual TimeSpan MyTimeProperty { get; set; }
}

И файл сопоставления:

<!-- other properties -->
<property name="MyTimeProperty" type="TimeSpan" /> <!-- Note: NH expects the DB type to be DbType.Int64 -->

Вы указываете, что пытаетесь отобразить TimeSpan («nhibenate не знает, как преобразовать поле времени из db в timepan, только строку»). Если это правильное совпадение типов между .NET (typeof TimeSpan) и базой данных (DbType.Int64), NH должен сделать это автоматически (то есть вам не нужно указывать type="TimeSpan"). Так что, если он не работает, я подозреваю, что есть проблема с настройкой вещей. Это может быть полезно, если вы публикуете объявление свойства / поля с полной подписью, строку <property> для этого свойства из файла сопоставления и определение столбца из базы данных.

2 голосов
/ 04 июня 2009

Кроме того, убедитесь, что вы используете для своей даты и времени значения NULL, которые могут быть нулевыми в базе данных.

DateTime? вместо просто DateTime.

Если нет, NHibernate попытается инициализировать вашу дату значением по умолчанию, которое, вероятно, не то, что вы хотите.

...