Преобразование в тип данных datetime2 в тип данных datetime в результате вне диапазона?
Я работаю над приложением, содержащим datepicker, и если я установил время в этом сборщике на очень старое значение или в далеком будущем, когда я пытаюсь сохранить это значение в базе данных, сервер выдает это исключение, в чем причина этого?
преобразование типа данных datetime2 в тип данных datetime в результате вне диапазона значение. Заявление было прекращено.
4 ответов
DateTime
имеет диапазон: от 1 января 1753 года до 31 декабря 9999
DateTime2
имеет диапазон: от 0001-01-01 до 9999-12-31
поэтому, если вы вводите дату до 1753 года, вы получите эту ошибку, когда поле в таблице имеет тип DateTime
.
Entity Framework добавит дату по умолчанию для поля значения {01/01/0001 00:00: 00}, и это находится вне диапазона генерации даты SQL. Поэтому, чтобы заставить его работать, нам нужно попросить EF не генерировать дату по умолчанию, мы можем сделать ее недействительной, выполнив следующее В модели этого класса.
в этом случае EntityFramework генерирует значение по умолчанию для поля LastLoggedIn. Если это поле в datebase может принимать значение null, подразумевается, что мы можем сделать его nullable, выполнив следовать в модели
[Display(Name = "LastLoggedIn")]
public DateTime? LastLoggedIn { get; set; }
эта ошибка также может быть вызвана неправильным написанием имени Поля в списке привязки действия контроллера. В моей ситуации дата по умолчанию была вне диапазона, так как поле даты не было связано, как я думал.