Преобразование типа данных datetime2 в тип данных datetime привело к выходу за пределы допустимого диапазона? - PullRequest
31 голосов
/ 12 сентября 2011

Я работаю над приложением, содержащим указатель даты, и если я устанавливаю время в этом средстве выбора на очень старое значение или в далеком будущем, когда я пытаюсь сохранить это значение в базе данных, сервер выдает это исключение, в чем причинаиз этого?

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

Ответы [ 4 ]

67 голосов
/ 13 сентября 2011

DateTime имеет диапазон: с 1 января 1753 года по 31 декабря 9999

DateTime2 имеет диапазон: 0001-01-019999-12-31

Поэтому, если вы вводите дату до 1753 года, вы получите эту ошибку, если поле в таблице имеет тип DateTime.

23 голосов
/ 19 июля 2012

Entity Framework добавит дату по умолчанию для поля значения {01/01/0001 00:00:00}, и это выходит за пределы диапазона создания даты SQL.Поэтому, чтобы заставить его работать, нам нужно попросить EF не генерировать дату по умолчанию, мы можем сделать ее обнуляемой, выполнив в модели этого класса следующее:

В этом случае для значения по умолчанию генерируется значениеПоле LastLoggedIn от EntityFramework.Если это поле в базе данных может принимать нулевое значение, это означает, что мы можем сделать его обнуляемым, выполнив следующие действия в модели

 [Display(Name = "LastLoggedIn")]
        public DateTime? LastLoggedIn { get; set; }
3 голосов
/ 10 сентября 2016
Products prd = new Products();            
prd.CreatedDate = DateTime.Now;

Вы можете добавить, как указано выше

0 голосов
/ 25 сентября 2018

Эта ошибка также может быть вызвана неправильным написанием имени поля в списке привязок действия контроллера.В моей ситуации по умолчанию дата выходила за пределы допустимого диапазона, поскольку поле даты не было связано, как я думал.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...