时间戳准确度 - 获得毫秒

wes*_*ton 2 sql-server nhibernate

如果我System.DateTime使用这个流畅的nhibernate映射在SQL中存储一个时间戳:

Map(x => x.LoggedTimeStamp).CustomType("Timestamp")
                           .Not.Nullable();
Run Code Online (Sandbox Code Playgroud)

当我存储并调用时间戳时:

new DateTime(2013, 5, 10, 14, 59, 13, 235);
Run Code Online (Sandbox Code Playgroud)

它回来等于new DateTime(2013, 5, 10, 14, 59, 13, 237);

它已经增加了2毫秒.这在SQL Server管理工作室中也很明显.

我的问题是,我可以告诉NHibernate使用更准确的字段类型吗?

Vil*_*lx- 8

这是SQL-Server标准日期时间类型的限制.

舍入为.000,.003或.007秒的增量

仅在SQL Server 2012 2008及更高版本中,才有更准确的日期时间类型.我不知道你是否可以让NHibernate使用它们(它肯定会破坏可移植性).

或者,如果此精度非常重要,您可以将日期时间值保存为数字甚至字符串,在NHibernate类型转换器中进行转换.我曾经做过类似的事情(有人使用的是MySQL的日期),但是很久以前我不知道这种方法是否仍然有效.阅读NHibernate关于自定义数据类型的文档.