本文主要介绍.NET Core通过使用Oracle Data Provider for .NET (ODP.NET) Core连接操作oracle数据库方法及代码。ODP.NET Core是一个ADO.NET驱动程序,提供从Microsoft .NET Core客户端到Oracle数据库的快速数据访问。它可以在Windows和Linux上运行。ODP.NET由一个100%托管代码动态链接库Oracle.ManagedDataAccess.dll组成,可通过NuGet安装获得。

1、使用必要条件

1) 安装Microsoft Visual Studio 2017或更高版本。

2) 安装Oracle Database 12c或更高版本。

2、ODP.NET Core安装配置

在Nuget管理程序中,搜索'Oracle.ManagedDataAccess.Core' =》选中然后点击'安装'。

相关文档VS(Visual Studio)中Nuget的使用

3、ODP.NET Core连接配置使用代码

1) 连接字符串配置代码

// 示例演示了如何使用ODP.NET Core配置API
// 添加连接描述符和网络服务名称条目
OracleConfiguration.OracleDataSources.Add("orclpdb", "(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=<hostname or IP>)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=<service name>)(SERVER=dedicated)))");
OracleConfiguration.OracleDataSources.Add("orcl", "(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=<hostname or IP>)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=<service name>)(SERVER=dedicated)))");
// 设置所有连接使用的默认语句缓存大小
OracleConfiguration.StatementCacheSize = 25;
// 默认情况下禁用自调优
OracleConfiguration.SelfTuning = false;
// 按名称绑定所有参数
OracleConfiguration.BindByName = true;
// 将默认超时设置为60秒
OracleConfiguration.CommandTimeout = 60;
// 设置默认获取大小为1 MB
OracleConfiguration.FetchSize = 1024 * 1024;
// 设置跟踪选项
OracleConfiguration.TraceOption = 1;
OracleConfiguration.TraceFileLocation = @"D:\traces";
// 取消下面的注释可以生成跟踪文件
//OracleConfiguration.TraceLevel = 7;
// 设置网络属性
OracleConfiguration.SendBufferSize = 8192;
OracleConfiguration.ReceiveBufferSize = 8192;
OracleConfiguration.DisableOOB = true;

2) 操作oracle数据库代码

app.Run(async (context) =>
{
    //Demo: ASP.NET Core的基本ODP.NET核心应用程序
    // 连接,查询和返回结果到网页
    //创建到Oracle的连接		
    string conString = "User Id=hr;Password=<password>;" +
    //如何连接到Oracle数据库没有SQL*Net配置文件
    // 也称为tnsnames.ora
    "Data Source=<ip or hostname>:1521/<service name>;";
    //如何使用DB别名连接到Oracle DB
    //Uncomment below and comment above.
    //"Data Source=<service name alias>;";
    using (OracleConnection con = new OracleConnection(conString))
    {
        using (OracleCommand cmd = con.CreateCommand())
        {
            try
            {
                con.Open();
                cmd.BindByName = true;                            
                 //使用该命令显示员工姓名
                 // EMPLOYEES表
                cmd.CommandText = "select first_name from employees where department_id = :id";
                // 将ID分配给部门号50
                OracleParameter id = new OracleParameter("id", 50);
                cmd.Parameters.Add(id);
                //执行命令并使用DataReader显示数据
                OracleDataReader reader = cmd.ExecuteReader();
                while (reader.Read())
                {
                    await context.Response.WriteAsync("Employee First Name: " + reader.GetString(0) + "\n");
                }
                reader.Dispose();
            }
            catch (Exception ex)
            {
                await context.Response.WriteAsync(ex.Message);
            }
        }
    }
});

官方文档https://www.oracle.com/webfolder/technetwork/tutorials/obe/db/dotnet/ODPNET_Core_get_started/index.html