Если не работает на Android 3.1, попробуйте исправить AndroidManifest.xml :
android:hardwareAccelerated="false"
NHibernate поддерживает DateTime, Ticks, TimeSpan и Timestamp . Убедитесь, что вы явно указываете тип в элементе отображения, поскольку разные типы времени имеют разную семантику, поэтому предположения NHibernate могут быть неверными.
Если у вас есть и по-прежнему возникают проблемы, измените свой пост, включив в него соответствующие части вашего объекта, файла сопоставления и реальной проблемы, с которой вы столкнулись.
Изменить:
Например, со следующим классом для 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 в временной интервал, только строка»). Если это правильное соответствие типов между .NET ( typeof
TimeSpan
) и базой данных ( DbType. Int64
), NH должен делать это автоматически (т.е. вам не нужно указывать type = "TimeSpan"
). Так что, если он не работает, я подозреваю, что проблема в том, как у вас все настроено. Это может быть полезно, если вы разместите объявление свойства / поля с полной подписью, строку
для этого свойства из вашего файла сопоставления и определение столбца из базы данных.
Кроме того, убедитесь, что вы используете значения NULL для DateTimes, которые могут иметь значение NULL в базе данных.
DateTime? вместо DateTime.
Если нет, NHibernate попытается инициализировать вашу дату значением по умолчанию, которое, вероятно, не то, что вам нужно.