簡體   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