相关疑难解决方法(0)

ODP.NET错误无法找到请求的.Net Framework数据提供程序

我正在尝试使用Oracle 11g Express和.NET 4.0框架开发ASP.NET MVC 4.0应用程序.我可以使用ODP.NET提供程序连接到数据库,也可以针对数据库生成我的EDMX.我不能做的是使用实体框架查询底层数据库.使用生成的connectionString Visual Studio实例化我的DbContext时,出现以下错误:

无法找到请求的.Net Framework数据提供程序.它可能没有安装

但是,它安装是因为

  1. 我可以在GAC中看到dll.
  2. 它在machine.config中提到.
  3. 它由我的项目引用.
  4. 我实际上用它从数据库生成我的EDMX.
  5. 我已经确认我到处都引用了正确的版本(4.112.3.0)

我在Cassini本地运行代码,我的硬件是32位架构,所以我假设我只能使用32位DLL,所以这不是架构问题.

代码的具体位是这样的:

public class MyContext : ObjectContext, IUnitOfWork
{
    public MyContext() 
    : base(ConfigurationManager
          .ConnectionStrings["OracleEntities"]
          .ConnectionString)//Connectionstring is verified
    {}
}
Run Code Online (Sandbox Code Playgroud)

在我离开一切之前请帮助我,留胡子然后在某个地方住在山上.

解决方案:由于我没有看到任何提及解决方案,我会在这里为后代提及它.Andrei下面询问了我的连接字符串格式,虽然我很狡猾,但我去看看了.这就是我所看到的:

metadata=res://*/OracleModel.csdl|res://*/
OracleModel.ssdl|res://*/
OracleModel.msl;
provider=provider=Oracle.DataAccess.Client;
provider connection string="DATA SOURCE=localhost:1521;
PASSWORD=xxx;PERSIST SECURITY INFO=True;USER ID=xxx
Run Code Online (Sandbox Code Playgroud)

现在,要特别注意这条线

provider=provider=Oracle.DataAccess.Client;
Run Code Online (Sandbox Code Playgroud)

事实上它应该阅读

provider=Oracle.DataAccess.Client;
Run Code Online (Sandbox Code Playgroud)

否则你告诉EF使用[provider.dll],这不是真的.另请注意,似乎已覆盖或忽略connectionString元素的providerName属性.

更新2:如果此STILL没有帮助,请查看machine.config.您应该看到以下部分:

<add name="Oracle Data Provider for .NET" invariant="Oracle.DataAccess.Client" description="Oracle Data Provider for .NET" type="Oracle.DataAccess.Client.OracleClientFactory, Oracle.DataAccess, Version=4.112.3.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />

  <remove invariant="Oracle.DataAccess.Client" /> …
Run Code Online (Sandbox Code Playgroud)

c# asp.net asp.net-mvc odp.net oracle11g

11
推荐指数
2
解决办法
3万
查看次数

ADO.NET提供程序"Oracle.ManagedDataAccess.Client"未在计算机或应用程序配置文件中注册,或者无法加载

我正在使用.NET4.5.1,MVC5EF6,Oracle.ManagedDataAccess 4.121.1.0Oracle.ManagedDataAccess.EntityFramework 6.121.2.0

我能够从现有数据库生成模型(部分按表添加表),应用程序构建就好了.

但是当我尝试运行测试查询以查看它是否可以获取数据时

 public ActionResult Cancellations()
    {
        var factoryClasses = System.Data.Common.DbProviderFactories.GetFactoryClasses();
        using (var db = new Entities())
        {
            var cancelationStatuses = new[] {3, 7, 9};
           var result = db.TRANSACTIONDETAIL.Where(o => cancelationStatuses.Contains(o.TRANSACTIONSTATUSID));
           return View(result);
        }
    }
Run Code Online (Sandbox Code Playgroud)

它失败了(上var result = ...)Unable to find the requested .Net Framework Data Provider. It may not be installed.

当试图寻找 DbProviderFactories确实在集合(var factoryClasses =)中没有任何东西.

但是我确实安装了12c 4(ODTwithODAC121024)和11g(ODTwithODAC1120320_32bit),并重新启动了机器.

数据库在11g上运行,我可以使用它访问它 PL/SQL developer …

c# oracle configuration .net-4.5 entity-framework-6

10
推荐指数
2
解决办法
4万
查看次数

ODP.NET托管 - 无法找到请求的.Net Framework数据提供程序

使用Visual Studio 2013,我使用Nuget将最新版本的ODP.NET Managed添加到项目中:

Install-Package odp.net.managed
Run Code Online (Sandbox Code Playgroud)

http://www.nuget.org/packages/odp.net.managed/121.1.2

现在,当我尝试运行以下代码时:

Database db = DatabaseFactory.CreateDatabase();
Run Code Online (Sandbox Code Playgroud)

它抛出以下异常:

An exception of type 'System.ArgumentException' occurred 
in System.Data.dll but was not handled in user code
Additional information: Unable to find the requested .Net
Framework Data Provider.  It may not be installed.
Run Code Online (Sandbox Code Playgroud)

在阅读其他用户的类似问题后,我将托管驱动程序部分添加到C:\ Windows\Microsoft.Net\Framework64\v4.0.30319\Config\machine.config:

<system.data>
        <DbProviderFactories><add name="Microsoft SQL Server Compact Data Provider 4.0" invariant="System.Data.SqlServerCe.4.0" description=".NET Framework Data Provider for Microsoft SQL Server Compact" type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=4.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"/>
        <add name="ODP.NET, Managed Driver" invariant="Oracle.ManagedDataAccess.Client" description="Oracle Data Provider for .NET, …
Run Code Online (Sandbox Code Playgroud)

.net c# oracle odp.net

9
推荐指数
2
解决办法
2万
查看次数