asp.net – Linq-to-SQL和DateTime的奇怪
我们在这里与
Linq-to-SQL 有很奇怪的和不一致的行为.
我们的应用程序安装在不少客户的网站上,它的工作原理很好. Linq-to-SQL中的一个查询将更新表,并将DateTime列设置为新值. 在所有的情况下 – 包括我们的开发和测试系统 – 这个Linq-to-SQL语句被翻译成如下: UPDATE dbo.OurTable SET WorkTimeStamp = @WTS WHERE ID = @ID @WTS = '2011-11-04 14:15:25',@ID = 555 然而,在一个客户的网站上,由于我们还不清楚的原因,此更新被翻译成: UPDATE dbo.OurTable SET WorkTimeStamp = @WTS WHERE ID = @ID @WTS = 'Nov 4 2011 02:15:25PM',@ID = 555 由于某种原因,SQL Server 2005失败了. 现在,该客户的服务器(Web服务器和SQL Server)安装了英文版的Windows Server 2008; SQL Server中的语言设置为us_english,日期格式设置为mdy,运行更新的用户帐户的语言在SQL Server中设置为英文…..这个设置与其他地方相同(例如,我们的测试服务器基础设施). 所以我的问题是: >为什么Linq-to-SQL突然创建了一个完全不同的表示形式的相同DateTime来发送到SQL Server?有没有旋钮来控制呢?
它似乎是一个.NET错误(多于SQL Server错误),似乎.NET无法真正解释为2011年11月4日02:15:25 PM作为有效的DateTime由于某些原因.当尝试在SQL Server Management Studio中运行生成的UPDATE语句时,我们似乎无法“强制”出现该错误 – UPDATE愉快地工作正常….. 更新:进一步的调查似乎表明,对于SQL Server 2005或2008,Linq-to-SQL的行为有所不同. >与SQL Server 2005,我们的日期变成:2011年11月4日02:15:25 解决方法
我想你可能会追赶错误的问题.
我会先检查一下: >您的LINQtoSQL模式/数据库模型是准确的. 我猜你(或你的客户)从获得’SqlTypeException – SqlDateTime溢出开始.必须在1/1/1753 12:00:00 AM和12/31/9999 11:59:59 PM错误消息之间,并在调查后注意到日期显示方式的差异. 你没有提到信息来自哪里,所以我假设像SQL分析器. 然而,日期显示问题可能是一个红鲱鱼,因为它不应该是一个问题.
我不知道你的意思是什么SQL不会将日期转换为字符串,因为它不将日期存储为字符串,但内部表示是一个数字(类似1900年1月1日以后的天数). 如果你的意思是你的日期显示为2011年11月4日02:15:25 PM,那么这是由显示信息的程序. 另外,据了解,如果您使用的是DateTime参数(如果数据库模型是准确的话,LINQ to SQL应该执行的话),则从客户端发送到SQL Server的信息是SQL数字表示形式约会时间.这应该避免客户端和服务器之间的任何datetime转换问题.当您查看SQL Profiler时,它不会显示日期的数字表示形式,这对大多数人来说意义非常小,但尝试有用,并以字符串形式显示该值. 重要的一点是,如果SQL或SQL分析器设法显示一个datetime参数为“2011年11月4日02:15:25 PM”,那么它知道它是一个有效的日期,它确切地知道是什么日期. 所以我怀疑显示格式问题可能是无关紧要的. 那就是为什么你的客户收到SqlTypeException – SqlDateTime溢出错误消息的问题. 首先要做的是检查你正在设置的日期值,这需要在应用程序级而不是在SQL Server服务器上完成,因为它不会那么远. (这是我不认为这是SQL配置问题的另一个原因.)
我没有看到.NET甚至会尝试将字符串解释为日期,除非你有一些DateTime.Parse命令,如果是这样,那么这个问题与LINQ或SQL无关. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – 我的支付方式按钮不会链接到支付朋友.它只刷新页
- asp.net-mvc – 测量时间调用ASP.NET MVC控制器操作
- asp.net – Web.config加密错误
- asp.net – 为什么我应该使用telerik radcontrols而不是vis
- ASP.Net MVC文件上传后期参数
- asp.net-mvc – 堆栈跟踪错误
- 缺少版本和工具:.NET Core,Core Tools,dotnet Core CLI,
- asp.net-mvc – 在MVC 3模型ID属性中将ScaffoldColumn属性设
- asp.net-mvc – 条件ASP.NET MVC剃刀部分
- asp.net – 替换过时的System.Xml.XmlDataDocument?
- asp.net – Visual Studio 2008,2010或2012(v11)
- asp.net-mvc – MVC Razor RC 1:可以用字符串常
- asp.net-identity – 保护整个ASP.NET 5 MVC 6应
- asp.net – 在.NET 4.5中混合使用Windows和Forms
- asp.net-mvc – ASP.net MVC – 视图如何访问模型
- asp.net – 带有服务器端资源字符串的Html输入标
- asp.net – 我可以在MVC中实现缓存,如果是这样的
- ASP.net WebAPI跨域调用问题的解决方法
- asp.net-mvc-3 – 为什么asp.net mvc模型绑定器生
- asp.net-mvc – 应用程序不记录