首页 > 解决方案 > FluentNHibernate:DateTime 的默认精度已更改?

问题描述

我目前正在尝试从 FluentNHibernate 1.4 / NHibernate 3.4.1 迁移到 FluentNHibernate 2.1.2 / NHibernate 5.2.4。使用的数据库是 DB2 LUW 11.1,.NET 目标框架是 4.61。

有问题的映射线:

 Map(x => x.TimeStamp).Column("TS").Nullable();

我很久以前写了一个持久性测试,确保没有毫秒从映射的 DateTime 属性持久化到 TIMESTAMP 字段。旧程序集测试通过,但新程序集失败。我现在必须使用 DateTimeNoMsType 作为自定义类型来获得旧的行为(考虑使用约定来处理它):

Map(x => x.TimeStamp).Column("TS").Nullable().CustomType<DateTimeNoMsType>();

我的问题:我是否正确地暗示 DateTime 属性的默认处理发生了变化?我试图在 GitHub 上查找各种流利的 nhibernate 和 nhibernate 版本的文档/里程碑描述,可悲的是,无济于事......

标签: c#nhibernatefluent-nhibernatenhibernate-mappingfluent-nhibernate-mapping

解决方案


找到它,它是 NHibernate 5.0.0 的一个重大变化。

https://github.com/nhibernate/nhibernate-core/blob/5.1.5/releasenotes.txt

  • NHibernate 类型 DateTimeType,它是 .Net DateTime 的默认值,不再减少小数秒。如果您希望减少小数秒,请使用 DateTimeNoMsType。它也适用于其本地/UTC 对应物。

推荐阅读