用entity framework 搭建的一个windows 程序,在vs中用oracle 的ODT 工具连接oracle数据库,昨天发布后出现下面一个错误,
System.ArgumentException: The specified store provider cannot be found in the configuration, or is not valid. ---> System.ArgumentException: Unable to find the requested .Net Framework Data Provider. It may not be installed. at System.Data.EntityClient.EntityConnection.GetFactory(String providerString) --- End of inner exception stack trace --- at System.Data.EntityClient.EntityConnection.GetFactory(String providerString) at System.Data.EntityClient.EntityConnection.ChangeConnectionString(String newConnectionString) at System.Data.Objects.ObjectContext..ctor(String connectionString, String defaultContainerName) ......
ODT也装了,为什么老是提示找不到数据提供程序呢,把oracle client安装了试试也不行,ODT重新安装还是不行,网上大多是web程序的问题,让我头大了,今天搞了一上午还是不行,下午我无意中看了一下编译时的输出,
C:WindowsMicrosoft.NETFrameworkv4.0.30319Microsoft.Common.targets(1578,5): warning MSB3270: 所生成项目的处理器架构“MSIL”与引用“Oracle.DataAccess, Version=2.112.3.0, Culture=neutral, PublicKeyToken=89b483f429c47342, processorArchitecture=x86”的处理器架构“x86”不匹配。这种不匹配可能会导致运行时失败。请考虑通过配置管理器更改您的项目的目标处理器架构,以使您的项目与引用间的处理器架构保持一致,或者为引用关联一个与您的项目的目标处理器架构相符的处理器架构。 C:WindowsMicrosoft.NETFrameworkv4.0.30319Microsoft.Common.targets(3075,5): warning MSB3187: 引用程序集“D:appDHproduct11.2.0client_2ODP.NETin2.xOracle.DataAccess.dll”面向的是另一个处理器,而不是此应用程序。
这才明白过来,马上更改项目生成中的目标平台由 Any CPU 到x86,重新发布后ok了,一切归于平静了。
总结,vs给我们提供了强大的提示功能,遇到问题,应首先查看vs给我们的提示,不要盲目的就去上网查找答案,网上未必有你想要的答案,自己找出来问题比别人帮你找出问题更有趣