FluentNHibernate:DateTime 的默认精度已更改?

FluentNHibernate: Default precision of DateTime changed?

我目前正在尝试从 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 查找各种 fluent nhibernate 和 nhibernate 版本的文档/里程碑描述,遗憾的是,无济于事...

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

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

  • NHibernate type DateTimeType, which is the default for a .Net DateTime, does no longer cut fractional seconds. Use DateTimeNoMsType if you wish to have fractional seconds cut. It applies to its Local/Utc counterparts too.