我们的环境中,每个客户都有自己的数据库实例(在所有意义上来说,这些实例具有相同的模式)。我们有一个仪表板应用程序,客户可以登录以执行其特定数据库中数据的CRUD操作。我们使用单个基于代码优先的EF模型与数据库交互。(对于正在查看的任何客户端,我们只需在实例化DbContext时传递该客户端数据库的连接字符串即可。)
然而,数据库实例是SQL Server 2005和2008的混合。(我很确定这是我们看到的问题的根源。)
在特定页面上,我们开始看到以下错误发生:
“正在使用的SQL Server版本不支持数据类型'datetime2'。”
通过谷歌和StackOverflow,我得出结论,这可能是由于DbContext上的错误配置的ProviderManifestToken导致的。
但是,错误是零星发生的。根据生产错误日志,我可以查看发生错误的同一客户端并执行相同的CRUD操作,而没有出现错误。
我感到困惑。
这是否有可能通过编程方式设置
顺便说一下...
发生错误的实体有2个
然而,数据库实例是SQL Server 2005和2008的混合。(我很确定这是我们看到的问题的根源。)
在特定页面上,我们开始看到以下错误发生:
“正在使用的SQL Server版本不支持数据类型'datetime2'。”
通过谷歌和StackOverflow,我得出结论,这可能是由于DbContext上的错误配置的ProviderManifestToken导致的。
但是,错误是零星发生的。根据生产错误日志,我可以查看发生错误的同一客户端并执行相同的CRUD操作,而没有出现错误。
我感到困惑。
这是否有可能通过编程方式设置
ProviderManifestToken
?或者默认的连接工厂没有正确地设置它(我能做些什么来帮助它)?还是我完全错了?有任何想法吗?顺便说一下...
发生错误的实体有2个
datetime
列,两者都可为空(最近的错误在这些字段中具有null
和2012年1月13日的值,所以我相当确定this answer关于确保值在datetime
范围内不适用。