【发布时间】:2017-04-29 09:03:41
【问题描述】:
这似乎是一件简单的事情,但 EF 不支持像 DateTimeOffset.DateTime 或 DateTimeOffset.LocalDateTime 甚至 DateTime.Date 这样的属性。我正在尝试仅通过 DateTime 组件(即“本地”DateTime)过滤 DateTimeOffset 类型字段,这在普通 sql 中很简单:where cast(x as datetime) = '2016-12-14'。
有一个DbFunctions.TruncateTime,但没有对应的TruncateOffset。
似乎没有任何方法可以将DateTimeOffset 对象转换或转换为在linq-to-entities 中工作的普通DateTime 对象。唯一的转换是从DateTime 到DateTimeOffset 的隐式转换,但反之则不然。
【问题讨论】:
-
TruncateTime有两个重载TruncateTime(Nullable<DateTimeOffset>)和TruncateTime(Nullable<DateTime>) -
两者都丢弃了时间。我想获取 DateTimeOffset 的 DateTime(日期和时间),而不需要 Offset。如果您无法获取 DateTimeOffset 的 DateTime 部分,那么支持该类型是完全没有用的。 DateTimeOffset 等效于 UTC DateTime,它只是将 DateTime 与 Offset 分开。如果我无法在 EF 中查询 DateTimeOffset 的 DateTime 部分,那就毫无价值了。就像我说的,在普通 SQL 中,它只是
cast(x as datetime)其中 x 是 DateTimeOffset 字段。他们真的需要一个 TruncateOffset 函数。
标签: entity-framework-6 datetimeoffset