programing

에서 Oracle 데이터베이스 연결 방법.넷코어

closeapi 2023. 6. 25. 20:06
반응형

에서 Oracle 데이터베이스 연결 방법.넷코어

.netCore 라이브러리에서 Oracle 데이터베이스에 연결하려고 합니다.제가 아직 그렇게 할 수 있는 방법이 없을까요?

다른 SO 게시물에서 제안을 시도해 보았지만 작동하지 않습니다. 아마도 그 이후로 제거되었을까요?제 프로젝트.json에서 볼 수 있듯이 "net461"을 사용하려고 합니다.

저는 현재 오라클을 사용해보고 있습니다.관리 데이터 액세스.구식 ADO를 통한 클라이언트.넷. 오라클이 아직 .netCore 커넥터를 구매하지 않은 것도 알고 있습니다.하지만 거기서도 작동이 안 돼요. 시스템을 얻기 위해 애를 씁니다.데이터가 포함되어 있습니다. 추가할 때마다 오류가 발생합니다.

내 프로젝트.json은 다음과 같습니다.

{
  "version": "1.0.0-*",

  "dependencies": {
    "NETStandard.Library": "1.6.0",
    "Oracle.ManagedDataAccess": "12.1.24160719",
  },

  "frameworks": {
    "netstandard1.6": {
      "imports": [
        "dnxcore50",
        "net461"
      ]
    }
  }
}

이것이 제가 그 순간에 그것을 하려고 했던 방법입니다.

using Oracle.ManagedDataAccess.Client;

public class MyRepository
{
    public string GetServerVersion()
    {
        var _db = new OracleConnection("User Id=myUser;Password=myPassword;Data Source=MyOracleConnection");

        var serverVersion = _db.ServerVersion;
        return serverVersion;
    }
}

그러나 위의 것은 System이 없기 때문에 컴파일이 되지 않습니다.데이터를 가져오는 데 어려움을 겪고 있습니다.

저는 그것을 하는 어떤 특정한 방법에 집착하는 것이 아니라 단지시점에서 가장 합리적인 옵션을 원합니다.

베타 릴리스.2018년 1월 말 Oracle출시한 NetCore Managed 드라이버(http://www.oracle.com/technetwork/topics/dotnet/downloads/net-downloads-160392.html .문서에서 지원되는 플랫폼 언급은 이제 Win과 Linux입니다.

Nuget: https://www.nuget.org/packages/Oracle.ManagedDataAccess.Core

스탠다드아트/인스턴트 오라클 클라이언트를 사용하는 다른 오래된 대안:

  • .Net Core 2.0의 경우 ericmend oracle Client Core-2.0 : https://github.com/ericmend/oracleClientCore-2.0 을 사용하는 것이 좋습니다.Nuget: dotNetCore.Data.OracleClient Win 및 Linux 플랫폼에서 성공적으로 사용했습니다.여기 나의 작은 샘플이 있습니다.
  • 대체 시스템.Data.Oracle Client는 2.0에서도 작동합니다. @Owen post를 참조하십시오.하지만 Win 플랫폼에서만 테스트합니다.
  • .Net Core > = 1.0의 경우 Mono의 Oracle 클라이언트 https://github.com/LinqDan/oracleclientcore Nuget에 기반한 .NET Core용 비공식 LinkQDan Oracle 클라이언트를 사용할 수 있습니다.모노. 데이터.Oracle ClientCore.

마지막 대안을 위한 나의 TestCore.csproj:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp1.0</TargetFramework>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="Mono.Data.OracleClientCore" Version="1.0.0" />
  </ItemGroup>
</Project>

My program.cs :

using System;
using System.Data.OracleClient;

namespace TestCore
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Starting.\r\n");                      
            using (var _db = new OracleConnection("User Id=myUser;Password=myPassword;Data Source=MyOracleConnection"))
            {
                Console.WriteLine("Open connection...");
                _db.Open();
                Console.WriteLine(  "Connected to:" +_db.ServerVersion);
                Console.WriteLine("\r\nDone. Press key for exit");
                Console.ReadKey();
            }           
        }
    }
}

오라클은 .NET Core용 공식 데이터 공급자를 nuget에 게시했습니다.

다음은 사용 방법을 보여주는 기본적인 예입니다.

using Oracle.ManagedDataAccess.Client;

public void Execute(string queryString, string connectionString)
{
    using (OracleConnection connection = new OracleConnection(connectionString))
    {
        OracleCommand command = new OracleCommand(queryString, connection);
        command.Connection.Open();
        command.ExecuteNonQuery();
    }
}

기본적으로 공식 .NET 시스템처럼 사용할 수 있습니다.Data.SqlClient(온라인 튜토리얼을 쉽게 찾을 수 있음)를 사용하면 코드 SqlConnection의 모든 부분을 OracleConnection으로, SqlCommand를 OracleCommand로 교체할 수 있습니다.

Oracle 2017은 Microsoft .NET Core와 ODP.NET Managed Driver를 기반으로 합니다.
Oracle은 윈도우즈 운영 체제 및 Oracle Linux의 .NET Core에서 관리되는 ODP.NET을 지원할 계획입니다.Managed ODP.NET은 추가 운영 체제를 지원할 수 있습니다.오라클은 다른 리눅스 배포판에 대한 지원을 계속 평가할 것이며 향후 추가 인증 목록을 발표할 것입니다.Oracle은 2 . 2.0에서는 인증할 이 없습니다. . Core 2.0에는 Microsoft 되는 ODP.NET Core 2.0 이전 버전에서는 인증할 계획이 없습니다. .NET Core 2.0에는 프레임워크에서 관리되는 ODP.NET 인증을 가능하게 하는 다양한 기능이 포함되어 있습니다.

기사의 출처: http://www.oracle.com/technetwork/topics/dotnet/tech-info/odpnet-dotnet-core-sod-3628981.pdf

업데이트됨:베타 릴리즈 ODP.NET Core

.NET 코어와 함께 오라클 데이터베이스를 사용하는 경우 몇 개의 nuget 패키지를 설치해야 합니다.

  1. 마이크로소프트.엔티티 프레임워크 코어
  2. Oracle.EntityFrameworkCore
  3. Oracle.Managed데이터 액세스.코어

이후에는 시작 클래스의 configureServices 메서드에 코드를 작성해야 합니다.

public void ConfigureServices(IServiceCollection services)
{
    services.AddDbContext<OracleDbContext>(options=>options.UseOracle(Configuration.GetConnectionString("OracleConnection")));            
}

OracleDbContext 클래스가 DbContext 클래스에서 상속되고 OracleConnection 연결 문자열이 appSettings.json 파일에 설정됩니다.

OracleDbContext.cs

public class OracleDbContext : DbContext
{
   public OracleDbContext(DbContextOptions options):base(options){}
}

appSettings.json

{
"ConnectionStrings":{
   "OracleConnection":"Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS= 
 (PROTOCOL=TCP)(HOST={url of your database})(PORT={port})))(CONNECT_DATA= 
 {name of your database for ex: SID})));User Id={user id};password= 
 {password}:"
 }
}

{} 괄호의 값을 바꿔야 합니다.이 연결 문자열은 데이터베이스가 로컬이 아닌 서버에 있을 때 사용됩니다.

다른 답변에서 언급했듯이 Oracle은 아직 Managed Client용 패키지를 출시하지 않았지만 올해 말에 출시할 예정입니다.

그러나 .NET Standard 2.0 릴리스 이후에는 시스템이 제공됩니다.Data.OracleClient 라이브러리가 업데이트되었습니다(NuGet을 통해 사용 가능).이 라이브러리는 구식이기 때문에 이상적인 솔루션은 아니지만, 사용할 수 있는 기능을 제공합니다. 패키지를 작성하여 공식 Oracle 라이브러리가 출시될 때 이를 교체할 수 있습니다.

appsettings.json을 프로젝트에 추가합니다(출력 dir: 항상 복사).연결 문자열 채우기:

{
 "ConnectionStrings": {
   "connection-db": "Data Source=192.168.1.3:1521/ORACLEVM;User 
                     Id=userId;Password=123;Validate Connection=true;"
  }
}

프로젝트에서 Nuget 패키지 관리를 열고 다음 패키지를 추가합니다.

마이크로소프트.내선 번호.배열.Json(.net core의 구성 관리자 사용)

Oracle.ManagedDataAccess.코어(.net core 버전의 오라클 데이터 액세스 클라이언트)

    static void Main(string[] args)
    {
        var builder = new ConfigurationBuilder()
           .SetBasePath(Directory.GetCurrentDirectory())
           .AddJsonFile("appsettings.json");

        var configuration = builder.Build();
        var connectionString = configuration.GetConnectionString("connection-db");
        using (OracleConnection connection = new OracleConnection(connectionString))
        {
            var command = new OracleCommand("INSERT INTO ..", connection);
            connection.Open();
            command.ExecuteNonQuery();
        }
    }

Frameworks 노드의 project.json에서 "dnxcore50"(즉, 프로젝트가 더 이상 순수한 .net 코어 응용 프로그램이 아님)을 삭제하고 다시 시도해야 합니다.현재로서는 .net core FOR를 통해 오라클에 연결할 수 없는 것으로 알고 있습니다. 이 링크를 확인하는 것이 도움이 될 수 있습니다.

오라클 .NET 팀을 기반으로 새로운 베타 ODP를 출시했습니다.NET 코어;

또한 여기에서 찾을 수 있습니다.

마지막으로 버전 "9.4.280" 이후로 devart의 dotConnect for Oracle은 .net core를 지원합니다.

Oracle Linked Server를 설정하고 SQL Server에서 Oracle Linked Server로 호출하는 저장 프로시저를 사용하여 이 작업을 수행했습니다.한번 해보세요.Openquery 또는 Exec을 사용할 수 있습니다.[likeedserver]에서 쿼리를 Oracle 측에서 실행합니다.

언급URL : https://stackoverflow.com/questions/41459631/how-to-connect-to-an-oracle-database-connection-from-net-core

반응형