【发布时间】:2017-02-06 17:27:01
【问题描述】:
我正在使用实体框架并将 DateTime 类型存储为“Utc”。
对于从数据库中检索此 DateTime 时的单元测试目的,它会出现“未指定”种类和不同的刻度值。
我了解 Entity Framework 无法自动为其分配 Utc 类型,但我不明白为什么它会出现不同的刻度值。
这是一个问题,因为我使用 Mspec 来测试检索到的值与放入 using 的值
result.Date.ShouldEqual(retrievedDate)
此语句返回 false,因为每个值的种类不同。我也试过了:
DateTime.Compare(result.Date, retrievedDate)
但由于刻度值不同,因此返回 false。
【问题讨论】:
-
你使用的是来自 sql server 的
sysutcdatetime()吗?datetime和datetime2(7)具有不同的精度级别。这会导致不匹配吗? -
This answer 可以帮助您解决
DateTimeKind问题,但 SqlZim 是正确的 - 如果您想要 .NET 中DateTime的完整范围和精度,您需要 SQL 中的datetime2. -
如果您的所有日期都存储为 Utc,您可以使用我对DateTime.Kind set to unspecified, not UTC, upon loading from database的回答
标签: c# asp.net-mvc entity-framework datetime