这被证明是我最不喜欢的错误消息,我曾经遇到过,因为它已经抬起头多次作为晚和更糟的,似乎并没有真正谈到什么是问题。
Could not determine storage version; a valid storage connection or a version hint is required.
到目前为止,这种情况已经出现了3次:生产数据库服务器(控制台应用程序触发它),生产网络服务器(ASP.NET网络表单应用程序),和开发网络服务器(ASP.NET网络表单应用程序)。可能会影响数据库服务器太多,但因为控制台应用程序是关于发送电子邮件给用户,我没有包括在该位置。
首先是生产数据库服务器,我做了大量的搜索来修复这个消息,唯一修复它的是进入机器的.config文件并剥离“额外的”dbfactories节点(“额外的”是因为我相信它是第一个存在的,但IBM DB2驱动程序添加了一个来放置它自己)生产Web服务器,完全相同的情况(它发生在它真正运行并安装了DB2驱动程序之后。如果我没有在数据库中看到它,那将是一段非常有趣的时光)。
因此,当我们构建开发服务器时,当对主dbcontext执行context.set.Where调用时,我又开始遇到这个消息。DB2驱动程序也安装在这个环境中,但是,当我查看machine.config文件时,只有一个dbfactory节点(并且它不包括对DB2驱动程序的引用)。
现在,值得一提的是,对于连接字符串,我们将它们存储在环境变量中(将其保存在web.config之外,should 使迁移到其他示例更容易,等等)。然而,这在生产环境和我的本地机器中工作得非常好。事实上,我更新了我的本地机器的环境变量,以使用dev数据库的连接字符串,它加载得很好。
哦,实体框架是6.1.3。我首先使用数据库(我猜?我真的只有针对类的DbContext/DbSet),所以没有edmx或任何处理数据库配置的文件。
基于所有这些,我觉得它又是一个奇怪的配置项,但是从我所知道的来看,我已经用尽了我在网上找到的所有项来分类它。是否有一种方法可以找出真正的错误是什么(比如两个生产服务器是如何由于不止一个dbfactory收集而导致的)?
1条答案
按热度按时间e0bqpujr1#
为我工作EF.5删除.edmx然后再次添加它