Я построил модель структуры сущностей на основе базы данных 2008 года. Все работает нормально с базой данных 2008 года. Когда я пытаюсь обновить объект в базе данных 2005 года, я получаю эту ошибку.
Используемая версия SQL Server не поддерживает тип данных datetime2.
Я специально не использовал какие-либо функции 2008 года при создании базы данных. Я не могу найти в коде ссылки на datetime2. И, да, столбец определяется в базе данных как «datetime».
источник
Быстрый просмотр линии:
источник
Это очень расстраивает, и я удивлен, что MS решила не делать этого, чтобы вы могли ориентироваться на данную версию SQL. Чтобы убедиться, что мы ориентируемся на 2005 год, я написал простое консольное приложение и вызвал его на этапе PreBuild.
Шаг предварительной сборки выглядит так:
Код здесь:
источник
Используя удобное консольное приложение @ Vance, описанное выше, я использовал следующее как событие BeforeBuild
Это очень удобно, так как позволяет избежать утомительного повторного развертывания. Спасибо, что поделился Вэнсом.
Я добавил TF.exe в папку решения библиотеки, и это помогает, так как теперь я могу проверить файлы edmx, прежде чем пытаться редактировать их, как часть сборки. Также я добавил это с условиями, так что он установлен на 2005 год для развертывания на сервере и обратно на 2008 год для конфигураций sln машины Dev. Также, чтобы упомянуть, вам необходимо добавить фактический файл (ы) SetEdmxSqlVersion.exe (и .pdb) в папку библиотеки (или в другое место, где вы хотите сохранить эти биты).
Большое спасибо @Vance. Действительно аккуратно, значительно экономит время и делает мои сборки полностью автоматизированными и безболезненными :)
источник
Была аналогичная проблема с 2012 по сравнению с 2008 годом. Ее можно решить с помощью события BeforeBuild, используя XmlPeek и XmlPoke:
Если вам не нравится автоматическая замена, вы можете просто заменить задачу XmlPoke задачей с ошибкой.
источник
CallTarget
условных целевых задач предварительной сборки в зависимости от конфигураций публикации / сборки. (EG изменяется только при развертывании в среде sql2005)Для удобства людей, которые сталкиваются с той же проблемой, но используют Code First , ознакомьтесь с моим ответом здесь о том, как изменить
ProviderManifestToken
в Code First. Он включает созданиеDbModelBuilder
вручную и передачуDbProviderInfo
экземпляра (с соответствующим токеном) при вызовеBuild
метода построителя модели .источник
Type System Version=SQL Server 2005
в строке подключения также может работатьЛучшее решение для меня - вместо ручного редактирования файла EDMX просто открыть edmx в режиме проектирования и в контекстном меню «Обновить модель из базы данных ...». Конечно, вы должны указывать на правильную версию SQL, что бы это ни было для вас.
источник
У нас была эта ошибка на SQL2005 v.3, где у нас ее не было на SQL2005 v.4.
Добавление SQL2005 в строку подключения устранило нашу конкретную проблему.
Мы еще не определили, почему, и не хотели изменять код для предоставления токена, как было решено выше (проблема проявляется во время развертывания).
источник