你好,我有一个应用程序,使用nhibernate作为orm,我需要存储的数据,代表时间, 什么是最好的办法呢?时间和Nhibernate
nhibenate不知道将时间字段从数据库转换为时间跨度,只有字符串。
你好,我有一个应用程序,使用nhibernate作为orm,我需要存储的数据,代表时间, 什么是最好的办法呢?时间和Nhibernate
nhibenate不知道将时间字段从数据库转换为时间跨度,只有字符串。
NHibernate支持DateTime, Ticks, TimeSpan and 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 -->
表明您正在尝试映射时间跨度(“nhibenate不知道将时间字段从数据库转换为时间跨度,只有字符串”)。如果这是.NET(typeof
TimeSpan
)与数据库(DbType.Int64
)之间的正确类型匹配,则NH应自动执行此操作(即,您不需要指定type="TimeSpan"
)。所以如果它不能正常工作,我怀疑你的设置方式有问题。如果您使用完整签名发布属性/字段声明,映射文件中该属性的<property>
行以及数据库中的列定义,则可能会有所帮助。
此外,请确保您使用数据库中可以为null的DateTimes的可用空值。
DateTime?而不仅仅是DateTime。
如果不是,NHibernate会尝试初始化您的日期到一个默认值,这可能不是你想要的。
我需要指定流利的nhibernate类型吗? – 2009-06-06 14:28:44