datetime2 и ProviderManifestToken в Entity Framework - PullRequest
5 голосов
/ 30 октября 2010

У меня есть приложение MVC, использующее Entity Framework и базу данных SQL Server 2008.Для создания модели данных я использовал мастер EF.

У меня есть таблица SQL Server со стандартным столбцом DateTime.Модель EF использует System.DateTime.

Но когда я пытаюсь вставить новую запись в эту таблицу из моего приложения, не указывая значение для этого столбца DateTime, я получаю сообщение об ошибке:

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

Я немного погуглил и обнаружил, что люди редактируют edmx и меняютProviderManifestToken.Очевидно, что это будет перезаписано, есть ли более постоянное исправление или способ исправить это?

1 Ответ

3 голосов
/ 30 октября 2010

Проблема заключается в том, что, как вы сказали, вы не устанавливаете какое-либо значение для этого свойства DateTime в сущности, что приводит к его значению по умолчанию «0001-01-01», которое определенно выходит за пределы диапазона дата / время столбец на SQL Server.Тип даты и времени: 1 января 1753 г., до 31 декабря 9999 .

Чтобы решить эту проблему, вы должны либо присвоить этому свойству значение в диапазоне перед его отправкой на SQL Server, либо изменить тип столбца БД на datetime2 с диапазоном дат от 0001-01-01 до 9999-12-31 .

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