从 asp.net 核心连接到 Oracle 数据库

Connect to Oracle database from asp.net core

首先,我阅读了有关连接到 Oracle 数据库的其他帖子,不幸的是他们无法帮助我。我将描述我尝试过的内容,希望有人能指出正确的方向。

首先我尝试安装 ODTwithODAC122010 正如许多消息来源所说,但是这个给了我一些退出代码非零的进程。它说它成功了,但似乎没有任何改变。

接下来我尝试安装 ODTforVS2017_122010.exe 我有一个更新的 Visual Studio 专业版。它说安装成功。然而,这似乎没有像教程描述的那样添加任何选项。我的意思是应该有一些可见的东西;

visual studio 工具 -> 连接到数据库 -> Oracle 数据库,数据提供程序菜单应该有类似 Oracle for 的东西.. 不幸的是这没有出现..

所以我尝试连接到我的 visual studio 项目中的数据库,选择 .net 框架数据提供程序 for oracle。这里要求三个字段:服务器名称用户名和密码。我尝试填写它们,但无法连接。 对于我使用的服务器名称:IPADDRESS:PORT/SERVICENAME

之后我放弃了通过visual studio连接数据库的希望(我可以使用oracle SQL开发者连接数据库)

然后我安装以下 nuget 包: - Oracle.ManagedDataAccess - System.Configuration.ConfigurationManager - System.Security.Permissions - System.Security.Principal

并写了一段代码来连接数据库,如:

using(OracleConnection connect = new OracleConnection(ConnectionDetails.returnConnectionString()))
{
    connect.Open();
    Console.WriteLine("did it work?" + connect.ServerVersion);
}

其中 returnConnectionString returns:

"User Id=MYID;Password=MYPASSWORD;Data Source=IPADDRESS:PORT/SERVICENAME"

不幸的是,当我尝试 运行 时,我遇到了 ExecutionContext.cs 未找到的问题。这发生在 connect.open();

我将在以下位置启动此代码:

    public static void Main(string[] args)
    {
        var a = new DatabaseConnector();
        a.test();
        BuildWebHost(args).Run();
    }

最后,我想明确表示我正在使用 ASP.NET Core,非常感谢您的建议和帮助!

目前没有 ODP.NET 对 .NET Core 的支持,它原定于去年发布,但是 ODP 推特帐户的消息超过 it's coming tweet 几周了以前。

您可以通过将项目从 .netcoreapp2 移动到 net461 或更高版本的目标框架来使当前版本正常工作,但这会从您的项目中删除跨平台支持。

要将您的项目移动到 .net461 或任何其他文件,请按照以下步骤操作:

  1. 编辑您的 csproj 文件并将 TargetFramework 替换为 net461
  2. 如果您有一个 Web 项目,请删除 Microsoft.AspNetCore.All 包并安装 Microsoft.AspNetCore(应该下载其他依赖项)。

在问这个问题时,没有车手 Roy Sanchez 回答这个问题。几周后,该驱动程序在 oracle 站点上以 nuget 包的形式发布。

准确地说,

  1. 右键单击您的项目
  2. 转到管理 NuGet 包
  3. 搜索 Oracle.manageddataaccess.core。您将获得 Nuget 包 2.12.0-beta2 版本。添加它。
  4. 在页面中,如下导入访问oracle 类

    使用 Oracle.ManagedDataAccess.Client;

这是 Oracle 数据访问提供程序的测试版,PROD 版预计将于 2018 年第三季度末推出。