【发布时间】:2013-09-13 21:47:20
【问题描述】:
我遇到了一些 Entity Framework 实体无法保存数据的问题。我得到的错误是
The conversion of a datetime2 data type to a datetime data type resulted in an out-of-range value
我有一个名为“Notes”的表格。它有一个名为“NoteDateTime”的日期时间字段。这是用于创建表的 SQL 的 sn-p。如您所见,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 线程,建议是确保使用正确的日期并且日期不应为空。日期不为空,并且肯定在可接受的最小/最大限制范围内。我还尝试将列的类型转换为数据库中的 datetime2 ,但这并没有解决问题。奇怪的是,这似乎是最近的问题。我能想到的唯一改变我们的环境是我们将项目迁移到使用 MVC 4。
如何解决此问题并正确保存我的 Note 实体?
【问题讨论】:
-
Notes 是否有任何包含非空日期时间的外键关系?当我上周遇到这个问题时,我认为 DateTime 是默认值(我的 ViewModel 没有正确分配)。看起来您将其设置为 DateTime.Now 所以这不太可能是问题。
-
Notes 表有几个外键,但我认为它们不会影响保存。
标签: c# asp.net sql asp.net-mvc entity-framework