时间和Nhibernate

时间:2009-06-03 17:15:55

标签: nhibernate nhibernate-mapping

你好我有一个使用nhibernate作为orm的应用程序,我需要存储代表时间的数据, 最好的方法是什么?

nhibenate不知道将时间字段从db转换为时间跨度,只有字符串。

2 个答案:

答案 0 :(得分:7)

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 -->

您表示您正在尝试映射TimeSpan(“nhibenate不知道将时间字段从db转换为时间跨度,只有字符串”)。如果这是.NET(typeof TimeSpan)和数据库(DbType.Int64)之间正确的类型匹配,NH应该自动执行此操作(即您不需要指定{{1 }})。因此,如果它不起作用,我怀疑你的设置方式存在问题。如果您使用完整签名发布属性/字段声明,从映射文件发布此属性的type="TimeSpan"行,以及从数据库发布列定义,则可能会有所帮助。

答案 1 :(得分:2)

另外,请确保在日期时使用nullables,数据库中可以为null。

的DateTime?而不仅仅是DateTime。

如果没有,NHibernate将尝试将您的日期初始化为默认值,这可能不是您想要的。