关闭

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

标签: MVC+EF+Oraclebug
1779人阅读 评论(1) 收藏 举报
分类:

安装完 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一样名字一样


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:75677次
    • 积分:1145
    • 等级:
    • 排名:千里之外
    • 原创:38篇
    • 转载:13篇
    • 译文:0篇
    • 评论:4条
    文章分类
    最新评论