У меня есть приложение LINQ to Entities и проект базы данных для управления схемой в решении VS 2010, предназначенном для .NET 4.0. Модель сущностей в настоящее время обратно проектируется из базы данных. Одна из таблиц определяется столбцом типа datetime. Проект базы данных настроен на использование режима совместимости SQL Server 2005, поэтому все развертывается в порядке.
Я только что столкнулся с проблемой, когда оператор обновления через структуру сущностей, похоже, использует datetime2, а не datetime, что вызывает исключение, поскольку SQL 2005 не поддерживает этот тип данных:
System.Data.UpdateException: An error occurred while updating the entries.
See the inner exception for details. ---> System.ArgumentException: The version
of SQL Server in use does not support datatype 'datetime2'.
Из трассировки стека видно, что ошибка, по-видимому, происходит внутри:
System.Data.Mapping.Update.DynamicUpdateCommand
Я просмотрел весь свой код SQL и код сущности и подтвердил, что ссылок на datetime2 не существует (включая файл dbschema). Я могу только заключить, что тип данных генерируется в динамическом запросе SQL, сгенерированном структурой сущностей.
Как я могу подтвердить или опровергнуть это, и как я могу предотвратить это? Платформа Entity не знает, что я попросил проект db нацелиться на режим совместимости 2005 года, и я не вижу способа указать ему версию, на которую он смотрит. Что бы это ни стоило, я создал этот проект на машине, на которой был установлен 2008 Express, но я периодически переключаюсь на другую машину, которая не (и пока не может обновить).