gpt4 book ai didi

c# - 错误 - SqlDateTime 溢出。必须在 1/1/1753 12 :00:00 AM and 12/31/9999 11:59:59 PM 之间

转载 作者:可可西里 更新时间:2023-11-01 08:52:27 26 4
gpt4 key购买 nike

我有一个为 2008 年编写的应用程序。

我们正在对实体使用 linq。

我们现在不得不将数据库切换到 2005。我在 linq SELECT 查询中收到以下错误:

Error - SqlDateTime overflow. Must be between 1/1/1753 12:00:00 AM and 12/31/9999 11:59:59 PM.

违规行是:

DateOfBirth = ((s.Date_Of_Birth == null) || (s.Date_Of_Birth <= lowdate)) ?
DateTime.MinValue : s.Date_Of_Birth.Value,

DateOfBirth 是 DateTime 类型,是我们自己的业务对象(不是实体)中的一个属性。

有人知道我如何修改这一行来运行这个查询吗?

最佳答案

确保 lowdate 至少为 1/1/1753。

如果您尝试提供早于该日期的日期,EF 将对其进行转换,并将其传递到您的查询中。此外,您不需要在查询中使用 DateTime.MinValue,而是您的最小值:

DateOfBirth = ((s.Date_Of_Birth == null) || (s.Date_Of_Birth <= lowdate)) ?
new DateTime(1753,1,1) : s.Date_Of_Birth.Value;

请记住,使用 EF 时,查询会在服务器上编译并转换为 SQL,因此值也必须在服务器上都合适。

也就是说,我个人更喜欢将 DateOfBirth 存储为 DateTime?(可空类型),而不是使用“神奇值”(DateTime. MinValue) 以保存数据库空值或不适当的值。

关于c# - 错误 - SqlDateTime 溢出。必须在 1/1/1753 12 :00:00 AM and 12/31/9999 11:59:59 PM 之间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3399061/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com