SQLDateTime溢出和所有DateTime字段都是有效的

时间:2016-09-12 02:23:13

标签: sql .net vb.net linq

我收到的异常消息很简单:

  

SQLDateTime溢出必须介于1/1/1753 12:00:00 AM和12/31/9999 12:59:59 PM``

这是使用Linq to SQL的VB 2013代码:

Dim BQCust = (
    From c In FinDB.Customers
    Where c.Customer_Account = 2000223).FirstOrDefault
FinDB.SubmitChanges(ConflictMode.ContinueOnConflict)

此示例中未进行任何更改。我手动检查了Customer类型的BQCust对象中的所有6个日期时间字段,但没有一个匹配错误条件。除了其中一个之外的所有标记都被标记为允许Nulls。 1的值不是#5/14/2016 9:20:03 AM#。此外,他们都必须有效才能被包含在SQL DB表中,我将从中检索它们。那么什么数据导致了这个异常?

CREATE TABLE [dbo].[Customers](
    [RecIdent] [int] IDENTITY(1,1) NOT NULL,
    [Customer Account] [decimal](18, 0) NOT NULL,
    [Customer Name] [varchar](255) NULL,
    [Company] [varchar](255) NULL,
    [Customer Status] [varchar](255) NULL,
    [Address 1] [varchar](255) NULL,
    [Address 2] [varchar](255) NULL,
    [City] [varchar](50) NULL,
    [State] [varchar](50) NULL,
    [Zip Code] [char](10) NULL,
    [County] [varchar](50) NULL,
    [Date Created] [datetime] NULL,
    [Account Type] [varchar](255) NULL,
    [Sales Representative] [varchar](50) NULL,
    [Renewal Date] [datetime] NULL,
    [Account Manager] [varchar](50) NULL,
    [Acceptance Date] [datetime] NULL,
    [Voided Date] [datetime] NULL,
    [Expiration Date] [datetime] NULL,
    [LastChanged] [datetime] NOT NULL CONSTRAINT [DF_Customers_LastChanged]  DEFAULT (getdate()),
 CONSTRAINT [PK_Customers] PRIMARY KEY CLUSTERED 

2 个答案:

答案 0 :(得分:0)

请注意,如果您在调试器中使用VoidedDate = NULL (Nothing),则表示.NET中为0001-01-01

.NET中的DateTime对象没有null

如果您想调试,请尝试将数据选择到数据表中,然后使用完全相同的数据表进行更新。

答案 1 :(得分:0)

我在另一个StackOverflow帖子中发现了一个精明的观察。

  

SubmitChanges()应用自您上次调用以来的每个更改   SubmitChanges()或创建上下文。你可以确定一切   通过查看db.GetChangeSet()来了解更改。任何日期/时间   任何受影响对象上的列可能是原因 - 例如,if   任何日期时间都是默认的DateTime.MinValue,它是   超出SQL Server的范围。 - mellamokb 4月17日和13日13:11

这是我的问题!!我在获取BQCust的新值之前尝试了提交,但仍然出现错误。我之前从未使用过GetChangeSet方法,但现在我将使用它。谢谢你的帮助!