Entity Framework Error - используемая версия SQL Server не поддерживает тип данных datetime2 - PullRequest
4 голосов
/ 01 июля 2011

Я использую Entity Framework 4.0 в веб-форме ASP.NET 4.0.

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

System.ArgumentException
Используемая версия SQL Server не поддерживает тип данных "datetime2".

Я сделал быстрое исследование и обнаружил, что datetime2 aka datetime2(7) - это проблема, и установка ProviderManifestToken="2005" решит проблему.

Моя проблема в этом. Мой сервер разработки имеет SQL Server 2008 R2 , а рабочий сервер имеет SQL Server 2008 Express . Таким образом, изменение манифеста на 2005 год кажется неправильным.

Мои вопросы

  1. Будет ли работать настройка ProviderManifestToken="2005"?
  2. Почему Entity Framework сгенерировал datetime2, когда я вообще не использовал его ни в одной из таблиц?
  3. Есть ли лучшая работа?

Ответы [ 3 ]

23 голосов
/ 05 июля 2011

Я не вижу никакого обходного пути до даты. Поэтому, если вы используете SQL Server 2008 Express , щелкните правой кнопкой мыши на вашем edmx, откройте его с помощью XML (текстового) редактора и установите ProviderManifestToken="2005".

Звучит не так хорошо. Но это все, что у меня есть на данный момент.

2 голосов
/ 21 июня 2012

Я обнаружил, что ответ в этом посте у меня работает: Используемая версия SQL Server не поддерживает тип данных 'datetime2'

Оказывается, что EntityВ Framework 4 почему-то появилась идея использовать SQL Server 2008. Исправление состояло в том, чтобы отредактировать файл .edmx в редакторе XML и задать вместо Provider ProviderManifestToken = "2005".против SQL Server 2005:

<Schema Namespace="OfficeBookDBModel.Store"
    Alias="Self" Provider="System.Data.SqlClient"
    ProviderManifestToken="2005"
    xmlns:store=http://schemas.microsoft.com/ado/2007/12/edm/EntityStoreSchemaGenerator
    xmlns="http://schemas.microsoft.com/ado/2009/02/edm/ssdl">
0 голосов
/ 01 июля 2011

Просто введите DateTime.Now в качестве даты, если у вас нет других ...

Была та же самая ошибка, и это решило ее, потому что, если вы не установите значение для вашего объекта даты и времени, это будет 1/1/0001 12:00:00 AM ... это даст вам ошибку затем ... снова вот так я решил проблему

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