C# 无法确定类型为';的连接的提供程序名称;Oracle.DataAccess.Client.OracleConnection';

C# 无法确定类型为';的连接的提供程序名称;Oracle.DataAccess.Client.OracleConnection';,c#,.net,oracle,entity-framework,C#,.net,Oracle,Entity Framework,我试图将现有连接传递到DbContext,但出现以下错误: 无法确定类型为的连接的提供程序名称 Oracle.DataAccess.Client.OracleConnection 我做错了什么 var oracleConnectionString = ConfigurationManager.ConnectionStrings["OracleConnectionString"].ConnectionString; var transactionOptions = new Tra

我试图将现有连接传递到DbContext,但出现以下错误:

无法确定类型为的连接的提供程序名称 Oracle.DataAccess.Client.OracleConnection

我做错了什么

var oracleConnectionString = ConfigurationManager.ConnectionStrings["OracleConnectionString"].ConnectionString;

        var transactionOptions = new TransactionOptions();
        transactionOptions.IsolationLevel = IsolationLevel.ReadCommitted;
        using (var scope = new TransactionScope(TransactionScopeOption.Required, transactionOptions))
        {
            using (var conn = new OracleConnection(oracleConnectionString))
            {
                conn.Open();

                using (var context = new MainDbContext(conn, false))
                {
                    var cmd = @" some sql commandd here ...";
                    context.Database.ExecuteSqlCommand(cmd);

                    context.SaveChanges();
                }
            }

            scope.Complete();
        }
连接字符串:

<add name="OracleConnectionString" connectionString="Data Source=SERVER;Persist Security Info=True;User ID=USER;Password=PASS" />

当您的
edmx
文件位于不同的类项目中时,也就是说您的web项目,您还需要在web项目中具有相同的连接字符串

所以

班级项目

  • edmx文件
  • App.Config(edmx文件的连接字符串)
网络项目

  • Config(与上面的连接字符串相同。)
另外,看看这里,以防你遗漏了一些甲骨文
程序集。

如果先使用数据库,看起来无法从Oracle连接字符串创建新的DbContext,因为EF不知道在哪里查找元数据。您需要使用EF连接,而不是Oracle连接。这就是我解决问题的原因:

var efConnectionString = ConfigurationManager.ConnectionStrings["MainDbContext"].ConnectionString;
using (var conn = new EntityConnection(efConnectionString))
{
    conn.Open();

    using (var context = new MainDbContext(conn, false))
    {
    }
}

你确定你的
oracleConnectionString
正确吗?显示你的连接字符串。我在问题中添加了连接字符串。你的实体框架edmx在调用项目的不同项目中吗?还是都是一个项目?@Patrickhoffman:连接字符串的语法正确。我试着这么做,但不幸的是,这没有帮助。另外,我需要使用OracleConnection,所以我想我需要的是Oracle连接字符串,而不是.edmx文件连接字符串(带有“metadata=res://…”的字符串),也需要添加Oracle连接。我也这样做了。现在我在App/Web.config中有两个连接字符串