У нас есть среда, в которой каждый из наших клиентов имеет свой собственный экземпляр базы данных (с одинаковыми схемами для любых целей и задач).У нас есть приложение для панели мониторинга, где клиенты могут войти в систему для выполнения операций CRUD с данными в их конкретной базе данных.Для взаимодействия с базами данных мы используем одну EF-модель с первым кодом.(Для любого клиента, который мы просматриваем, мы просто передаем строку подключения базы данных этого клиента при создании экземпляра DbContext
.)
Однако экземпляры базы данных представляют собой смесь SQL Server 2005 и 2008. (Я довольноуверен, что это корень проблемы, которую мы видим.)
На определенной странице мы начали видеть следующую ошибку:
Версия SQL Serverиспользуется не поддерживает тип данных datetime2.
Из Google и StackOverflowing я пришел к выводу, что это, вероятно, из-за неправильно настроенного ProviderManifestToken
на DbContext
.
Однако ошибка носит эпизодический характер.Основываясь на производственных журналах ошибок, я могу просматривать тот же клиент, для которого произошла ошибка, и выполнять те же операции CRUD, не получая ошибку.
Я в растерянности.
Это дажеможно программно установить ProviderManifestToken
?Или, может быть, фабрика соединений по умолчанию не устанавливает ее должным образом (и я могу кое-что сделать, чтобы помочь ей в этом)?Или я далеко от базы?Есть идеи?
Кстати ...
Сущность, в которой происходит ошибка, имеет 2 datetime
столбцов, оба из которых могут быть обнуляемыми (ипоследняя ошибка содержала null
и 13 января 2012 г. в качестве значений для этих полей, поэтому я вполне уверен, что этот ответ о том, что значения находятся в диапазоне datetime
, неприменяются.