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>
для этого свойства из файла сопоставления и определение столбца из базы данных.