我正在尝试将NodaTime的OffsetDateTime类型映射到SQL Server,但我不确定如何解决NodaTime的OffsetDateTime和SQL Server的DateTimeOffset之间的阻抗匹配问题。
我遇到的主要问题是让LINQ支持正确工作,因为OffsetDateTime没有诸如< 的比较运算符。 代码>。这两个系统在处理相等性方面也有所不同。NodaTime考虑时间瞬间和偏移量,而SQL Server仅考虑时间瞬间。
SQL Server中认为2015-12-24 11:18 + 01:00和2015-12-24 10:18 + 00:00相等,但在NodaTime中它们不相等。
我考虑使用ICompositeUserType将UTC日期/时间和偏移量存储在单独的列中(类似于SQL Server 2008之前),但OffsetDateTime没有UTC / Instant属性。 因此,我无法看到如何将date.ToInstant()在LINQ查询中正确映射到ICompositeUserType的属性中。
我遇到的主要问题是让LINQ支持正确工作,因为OffsetDateTime没有诸如< 的比较运算符。 代码>。这两个系统在处理相等性方面也有所不同。NodaTime考虑时间瞬间和偏移量,而SQL Server仅考虑时间瞬间。
SQL Server中认为2015-12-24 11:18 + 01:00和2015-12-24 10:18 + 00:00相等,但在NodaTime中它们不相等。
我考虑使用ICompositeUserType将UTC日期/时间和偏移量存储在单独的列中(类似于SQL Server 2008之前),但OffsetDateTime没有UTC / Instant属性。 因此,我无法看到如何将date.ToInstant()在LINQ查询中正确映射到ICompositeUserType的属性中。
OffsetDateTime
类型,并将其映射到SQL Server的DateTimeOffset
或2个列,一个存储UTC值的DateTime
和一个偏移量。 - Chris Chilvers