У меня есть LINQ к приложению Объектов и проекту базы данных управлять схемой в решении VS 2010, предназначающемся для.NET 4.0. Модель объекта в настоящее время перепроектируется от базы данных. Одна из таблиц определяется со столбцом даты и времени типа. Проект базы данных настроен для использования режима совместимости SQL Server 2005 года и таким образом, все это развертывается хорошо.
Я только что столкнулся с проблемой, где оператор обновления через платформу объекта, кажется, использует datetime2, а не дату и время, которая вызывает исключение, потому что 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-запросе, сгенерированном платформой объекта.
Как я могу подтвердить или отклонить это, и как я мешаю ему произойти? Платформа объекта не знает, что я спросил проект дб предназначаться для режима совместимости 2005 года, и я не вижу способ указать ему на версию, на которую это смотрит. Если это имеет значение я создал этот проект на машине, которой действительно устанавливали Экспресс 2008 года, но я периодически переключаюсь на другую машину, которая не делает (и просто еще не может обновить).