【问题标题】:Time and Nhibernate时间和休眠
【发布时间】:2009-06-06 02:07:27
【问题描述】:

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

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

【问题讨论】:

    标签: nhibernate nhibernate-mapping


    【解决方案1】:

    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 应该自动执行此操作(即您不需要指定 type="TimeSpan")。因此,如果它不起作用,我怀疑您的设置方式存在问题。如果您发布带有完整签名的属性/字段声明、映射文件中此属性的 &lt;property&gt; 行以及数据库中的列定义,这可能会有所帮助。

    【讨论】:

    • 是否需要在fluent nhibernate中指定类型?
    【解决方案2】:

    另外,请确保您的 DateTimes 使用可空值,在数据库中可以为空。

    日期时间?而不仅仅是日期时间。

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

    【讨论】:

      猜你喜欢
      • 2014-02-03
      • 2014-05-24
      • 2015-12-18
      • 2010-09-24
      • 2011-08-24
      • 1970-01-01
      • 2012-10-22
      • 2011-12-22
      • 1970-01-01
      相关资源
      最近更新 更多