преобразование типа данных datetime2 в ошибку типа данных datetime сначала с помощью кода EF?

Сначала я использую код EF со своим приложением asp.net mvc. вот мой код:

Request.RequestDate = DateTime.Now;

тип RequestDate - это дата и время в моей базе данных. и это ошибка, которая произошла, когда я использую приведенный выше код !:

Преобразование типа данных datetime2 в тип данных datetime привело к значению вне допустимого диапазона.

пожалуйста, помогите мне. благодаря.


person Mohammad Zare    schedule 14.05.2012    source источник
comment
возможный дубликат c # преобразования тип данных datetime2 в тип данных datetime   -  person CodeCaster    schedule 14.05.2012
comment
Вы используете SQL 2005? datetime2 диапазон от 0001/01/01 до 9999/12/31, следовательно, ошибка. Если это так, вам необходимо отредактировать XML-файл edmx.   -  person Jason Jong    schedule 14.05.2012
comment
@json jong: я использую sql server 2008, и у меня нет файла .edmx, потому что я сначала использую код !.   -  person Mohammad Zare    schedule 14.05.2012


Ответы (2)


Редактировать:

Как исправить Ошибка преобразования datetime2 вне допустимого диапазона с использованием DbContext и SetInitializer?

Проблема в том, что вы пытаетесь сохранить значение, которое не может поместиться в столбце даты и времени SQL. ответ здесь остановит преобразование от сбоя.

или в вашей базе данных измените столбцы на тип datetime2. Я точно не знаю, почему они сначала кодируют столбцы datetime вместо datetime2

Вот пример явного сопоставления столбцов Datetime с datetime2 в SQL

Использование свойств DateTime в Code- Первая Entity Framework и SQL Server

person Blast_dan    schedule 14.05.2012
comment
Я использую Code First, и у меня нет файла .edmx. - person Mohammad Zare; 14.05.2012
comment
Я думаю, что вам нужно указать, что столбец имеет тип datetime. Ваш код сначала сгенерировал базу данных? вы пытаетесь сохранить объект datetime2 в столбце datetime - person Blast_dan; 14.05.2012
comment
Да, моя база данных сначала успешно сгенерирована с кодом, и этот столбец имеет тип datetime. - person Mohammad Zare; 14.05.2012
comment
Какую базу данных SQL вы используете? - person Blast_dan; 14.05.2012

На моей стороне это было потому, что datetime не допускало значения NULL и в некоторых ситуациях поле не было инициализировано в конструкторе. Я решил это, установив мое поле как допускающее значение NULL

public DateTime? MyDate { get; set; }

Другое решение - инициализировать поле в конструкторе, несмотря ни на что.

person Daniel    schedule 01.04.2014
comment
Это решило проблему для меня. Поразмыслив, сообщение об ошибке невелико. Я создал столбец DateTime, почему он пытается преобразовать его во что-то другое? почему бы просто не сказать мне, что ограничение было нарушено ... - person sarin; 22.02.2016