【问题标题】:DateTime culture issue in Entity Framework实体框架中的日期时间文化问题
【发布时间】:2017-12-04 12:29:22
【问题描述】:

我使用实体框架和代码优先方法将模型发送到数据库(即 SQL Server 2014)。

该模型有 2 个 DateTime 字段,其中一个是用户输入。我将它存储在 datetime? 变量中,然后 EF 完成其余工作以将模型存储在数据库中。

我的项目是多文化的,当我使用像 fa-ir 这样的另一种文化时,EF 会显示以下错误:

将 datetime2 数据类型转换为 datetime 数据类型导致值超出范围。声明已终止。

它适用于具有波斯文化的 Windows 2014 及更新版本,但不适用于不支持波斯文化的先前版本。

有什么办法吗?

【问题讨论】:

  • 您可以在插入 vlaue 之前将 threa 的文化更改为波斯语 ..
  • @pranay-rana 是的,我将文化更改为 en-us,但问题没有得到解决!
  • 好的,我在我的 ado.net 代码中尝试了这个技巧,它对我有用,所以我建议这样做
  • 您必须选择一个日历(波斯或公历),最好选择一个时区(UTC),并将所有日期以该格式存储在您的数据库中。将它们全部存储在不同的时区甚至日历中都没有任何好处。
  • 请向我们展示异常发生时正在执行的代码。请务必突出显示引发异常的行

标签: c# sql-server entity-framework datetime culture


【解决方案1】:

SQL datetime 数据类型仅支持从 1753-01-01 到 9999-12-31 的日期。

但是波斯历的当前年份是 1396。

所以你必须将 SQL 列更改为支持 0001-01-01 到 9999-12-31 的 datetime2 数据类型。

【讨论】:

  • 我在此范围内选择一个日期,并将其存储在 datetime 变量中。我想以日期时间格式将日期存储在数据库中,因为结果在此范围内。这不是导致此错误的原因,此外我不喜欢变通方法和临时解决方案!
猜你喜欢
  • 1970-01-01
  • 2018-04-25
  • 1970-01-01
  • 1970-01-01
  • 2011-06-06
  • 1970-01-01
  • 2017-10-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多