天天写代码⎝⏠⏝⏠⎠

主做记录交流之用,如有不对请指出。谢谢!

MVC+EF+Oracle运行时 “System.ArgumentException”异常

安装完 Oracle Developer Tools for Visual Studio,配置完EF后运行出现:


“System.ArgumentException”类型的异常在 System.Data.Entity.dll 中发生,但未在用户代码中进行处理
其他信息: 指定的存储区提供程序在配置中找不到,或者无效。

或 找不到请求的 .Net Framework Data Provider。可能没有安装。


引发异常的原因是因为machine.config文件中没有配置oracle的程序映射。

machine.config:Visual Studio的配置文件,位于C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config

原因:

首先分析连接字符串 

  <connectionStrings>
    <add name="Entities" connectionString="metadata=res://*/EF.OracleModel.csdl|res://*/EF.OracleModel.ssdl|res://*/EF.OracleModel.msl;provider=Oracle.ManagedDataAccess.Client;provider connection string="DATA SOURCE=192.168.0.153:1521/orcl;PASSWORD=Erp168;USER ID=ERPUSER1"" providerName="System.Data.EntityClient" />
  </connectionStrings>

  • name="Entities"  //连接字符串名称 
  • connectionString=""  //连接字符串主题 
  • provider=Oracle.ManagedDataAccess.Client;   //Oracle.ManagedDataAccess.Client程序集的名称,用于将EntityClient 的操作结果,解释为Oracle识别的操作,并作用于Oracle数据库,这个程序集它不是默认VS自带的,而是通过machine文件配置出来的,所以假如没有这个程序集,就无法和Oracle沟通,即使运行成功一但有涉及到数据库的数据操作就会发生异常
  • providerName="System.Data.EntityClient"    //System.Data.EntityClient 命名空间是 Entity Framework 的 .NET Framework 数据提供程序。

所以引发异常的原因就是因为machine.config文件中没有配置oracle程序集的程序映射


解决:
 需要在该文件中的DbProviderFactories节点中添加
<add name="ODP.NET, Managed Driver" invariant="Oracle.ManagedDataAccess.Client" description="Oracle Data Provider for .NET, Managed Driver" type="Oracle.ManagedDataAccess.Client.OracleClientFactory, Oracle.ManagedDataAccess, Version=4.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342"/>

        invariant需要和配置文件的provider一样名字一样


阅读更多
版权声明:本文为博主原创文章,如需转载请附出处。 https://blog.csdn.net/CommandBaby/article/details/51535816
文章标签: MVC+EF+Oracle bug
个人分类: C# Oracle
上一篇Visual Studio 连接 oracle, MVC+EF5+Oracle
下一篇ajax,get时请求异步缓存
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭