繁体   English   中英

实体框架无法保存-Datetime2到DateTime的转换失败

[英]Entity Framework Cannot Save - Conversion Of Datetime2 To DateTime Failing

我遇到了一个问题,其中我的一些Entity Framework实体无法保存数据。 我得到的错误是

The conversion of a datetime2 data type to a datetime data type resulted in an out-of-range value

我有一个名为“注释”的表。 它具有一个称为“ NoteDateTime”的日期时间字段。 这是用于创建表的SQL的代码段。 如您所见,NoteDateTime字段对此没有任何异常。

CREATE TABLE [db].[Notes](
    [NoteID] [int] IDENTITY(1,1) NOT NULL,
    [NoteText] [varchar](8000) NULL,
    [NoteDateTime] [datetime] NULL,
    [IsReviewRequired] [bit] NULL,
    [ConvertToGlobal] [bit] NULL,
    [EmployeeID] [int] NULL,
    [EvaluationID] [int] NULL,
    [CustomerID] [int] NULL,
    [EmailID] [int] NULL,
    [AddedWhenMerged] [bit] NULL,
CONSTRAINT [PK_Notes] PRIMARY KEY CLUSTERED 
(
    [NoteID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO

在我的C#代码中,填充“ Notes”实体并调用SaveChanges()方法。 当我调用SaveChanges()时发生错误。

dbContext.Notes.Add(new Note
{
    EvaluationID = evaluationId,
    CustomerID   = customerId,
    EmployeeID   = employeeId,
    NoteDateTime = DateTime.Now,
    NoteText     = noteText,
});

dbContext.SaveChanges();

我已经阅读了几个stackoverflow线程,建议是确保使用正确的日期,并且该日期不应为null。 日期不为空,并且一定在可接受的最小/最大限制内。 我还尝试将列的类型转换为数据库中的datetime2,但这不能解决问题。 奇怪的是,这似乎是最近发生的问题。 我唯一能想到的是环境中的变化是我们将项目迁移为使用MVC 4。

我该怎么做才能解决此问题并使我的Note实体正确保存?

朱莉·莱曼(Julie Lerhman)在这里讨论了这个确切的问题( http://channel9.msdn.com/Shows/Visual-Studio-Toolbox/Entity-Framework-Tips-and-Tricks ),请相信我,她是专家。

我自己,我会像这样使[NoteDateTime]在您的代码中为空

public DateTime? NoteDateTime { set; get; }

如您尚未提到的那样,请使用Sql事件探查器查看发送到服务器的SQL。 尝试手动运行sql,看看返回了什么错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM