实体框架 - SQL Server 2005 - IIS 服务器日期时间问题

Posted

技术标签:

【中文标题】实体框架 - SQL Server 2005 - IIS 服务器日期时间问题【英文标题】:Entity Framework - SQL Server 2005 - IIS Server datetime issue 【发布时间】:2012-08-14 14:54:00 【问题描述】:

我正在使用 MVC3 和实体框架。在我的应用程序中,我需要通过 EF 调用 SQL Server 2005 中的存储过程,以根据传递的datetime 参数搜索一些数据。

在本地环境中似乎一切正常。但是在将它托管到 IIS 之后,我在尝试从日期13-08-2012 开始搜索时遇到了异常(我猜在 SQL 中 13 是一个月)

错误提示

SqlDateTime 溢出。必须在 1753 年 1 月 1 日凌晨 12:00:00 到 12/31/9999 晚上 11:59:59

我理解错误是因为System.DatetimeSqlDatetime 之间的日期时间格式不同。

但我不明白为什么它在使用相同 SQL Server 的本地环境中正常工作,但在 IIS 服务器中托管后出现此错误。

这个问题有解决办法吗?

【问题讨论】:

有没有办法解决这个问题? 不要使用字符串。 其实我们在c#中使用System.DateTime,在SQL中使用DateTime类型 你能显示导致问题的代码吗? 【参考方案1】:

我的问题现在已经解决了。问题在于 IIS 中的文化设置。 我已将这些行添加到我的应用程序 web.config 中,现在可以正常工作了。

<globalization requestEncoding="utf-8" responseEncoding="utf-8" culture="en-GB" uiCulture="en-GB"/>

欲了解更多信息,请查看Issue with culture settings in IIS

【讨论】:

【参考方案2】:

IT 取决于服务器的文化,您可以使用固定格式格式化您的文化,在您的日期 13-08-2012 上,它将 13 视为月份。

//Here an example of formatting with invariant culture
CultureInfo yourCulture = CultureInfo.InvariantCulture;
yourValue.ToString("yourFormat",yourCulture));

【讨论】:

谢谢坎迪!!您为我指出了正确的方向,但我尝试过使用不变的格式文化。但它对我不起作用。 我很乐意为您提供帮助【参考方案3】:

验证日期时间格式。此外,DateTimeSqlDateTime 的范围不同。如果你收到一个空值,你会遇到麻烦。

【讨论】:

以上是关于实体框架 - SQL Server 2005 - IIS 服务器日期时间问题的主要内容,如果未能解决你的问题,请参考以下文章

使用 SQL Server 2008 和 SQL Server 2005 和日期时间

实体框架和 SQL Server Express 瓶颈

SQL Server 2005 嵌套视图 - 解除纠缠的策略? [关闭]

SQL Server 2005 视图与物化视图与存储过程

如何使用 SQL Server 2005 在 NHibernate 中映射 uint

DataTable 到带有实体框架的 SQL Server 表