【问题标题】:ServiceStack + OrmLite Date format issueServiceStack + OrmLite 日期格式问题
【发布时间】:2013-08-26 14:37:06
【问题描述】:

我正在使用 ServiceStack + OrmLite,但在 OrmLite 保存 DateTimeOffset 对象时遇到了一些问题。

我需要将其保存到具有中性文化格式(例如 ISO8601)的 SQL Server 数据库中,因此当用户更改其文化时,它不会对写入数据库的方式产生任何影响,因为现在它正在生成 @987654322 @ 由于文化转换问题导致的错误。

是否有任何 OrmLite 配置选项或类似的东西来避免这个问题?

【问题讨论】:

标签: c# sql datetime servicestack ormlite-servicestack


【解决方案1】:

SQL Server 中的日期/时间类型(包括 datetimedatetimeoffset)不与 any 区域性一起存储。它们根本不存储为字符串。它们以二进制表示形式在内部存储。

如果 C# 中的类使用 DateTimeOffset 类型的属性,而 SQL Server 中的表使用 datetimeoffset 类型的列,则字符串(和区域性)不应该出现在图片中。

如果您手动制作 SQL 字符串并内联您的值而不是使用参数,您可能会得到字符串。但我怀疑 ORM 会犯这个错误。

或者您是否尝试将 DateTimeOffset 的字符串表示形式填充到 varchar 字段中?

发布一些代码,以便我们可以看到您在做什么。

【讨论】:

  • 我设法解决了这个问题,我不知道为什么 OrmLite 似乎在为 DateTimeOffset 对象执行某种转换。我的数据库字段是 DateTimeOffset(7),POCO 声明也是 DateTimeOffset,我没有手动制作 SQL 查询。我刚刚将 POCO 字段更改为 DateTime,现在它就像一个魅力,我想我可能会在 github 上打开一个错误报告。不过,谢谢您的宝贵时间!
  • 听起来可能存在错误,所以是的 - 请向他们提出问题。
  • 经过进一步调查,我发现了发生了什么,似乎 OrmLite 没有为 DateTimeOffset 字段正确构建 SQL 查询
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-20
相关资源
最近更新 更多