实体框架中的日期时间文化问题
Posted
技术标签:
【中文标题】实体框架中的日期时间文化问题【英文标题】: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),并将所有日期以该格式存储在您的数据库中。将它们全部存储在不同的时区甚至日历中都没有任何好处。 请向我们展示异常发生时正在执行的代码。请务必突出显示引发异常的行 【参考方案1】:SQL datetime
数据类型仅支持从 1753-01-01 到 9999-12-31 的日期。
但是波斯历的当前年份是 1396。
所以你必须将 SQL 列更改为支持 0001-01-01 到 9999-12-31 的 datetime2
数据类型。
【讨论】:
我在此范围内选择一个日期,并将其存储在 datetime 变量中。我想以日期时间格式将日期存储在数据库中,因为结果在此范围内。这不是导致此错误的原因,此外我不喜欢变通方法和临时解决方案!以上是关于实体框架中的日期时间文化问题的主要内容,如果未能解决你的问题,请参考以下文章