programing

dotnet mvc 응용 프로그램의 Oracle 데이터베이스에 연결

fastcode 2023. 8. 28. 22:19
반응형

dotnet mvc 응용 프로그램의 Oracle 데이터베이스에 연결

오라클은 닷넷 코어 2용 베타 버전 드라이버 ODP(마침내!)를 출시했습니다.하지만 난 그것을 할 수 없어요.누가 그랬어요?만약 그렇다면, 코드를 보내주시거나 이것을 고치는 것을 도와주세요 \o

유용: Visual Code, 프로젝트 "dotnet new mvc"(.net 2)를 사용하고 있으며 설치했습니다.Oracle.ManagedDataAccess.ClientNuget Add Package 기능(CTRL + P, ...)을 통해 내 코드:

public static OracleConnection AbrirSigmaUser(AutenticacaoModel autenticacao)
        {
            try
            {

                string _connectionString;

                _connectionString = "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.0.15)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=databaseName)));User Id=UserName;Password=***;";


                OracleConnection conexao = new OracleConnection();
                conexao.ConnectionString = _connectionString;

                //right here the program exit
                conexao.Open();             




                return conexao;
            }
            catch (System.Exception ex)
            {               

                throw new Exception("Não foi possível conectar ao banco de dados!" + "\nErro: " + ex.Message);
            }
        }

컴파일러가 dll 누락에 대해 많은 예외를 던지고 있었기 때문에 Nuget Add Package 기능을 통해 설치했습니다.

//required for connection
using Oracle.ManagedDataAccess.Client;
using System.Configuration;
using System.Security.Permissions;
using System.Security.Principal;

요청한 dll을 모두 추가한 후 프로그램은 코넥사오로 이동합니다.()를 열고 처리되지 않은 예외를 던지며 다시는 돌아오지 않습니다.

Unhandled Exception: System.TypeLoadException: Could not load type 'System.Security.Principal.WindowsImpersonationContext' from assembly 'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.
   at OracleInternal.ConnectionPool.PoolManager`3.CreateNewPRThreadFunc(Object state)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Threading.ThreadPoolWorkQueue.Dispatch()
The program '[8860] Sensatta-Analytcs.dll' has exited with code 0 (0x0).

이 모든 것이 정말로 간단한 연결을 만드는 데 필요합니까?

내 문제를 파악하기 위해 누락된 것(예: 코드 샘플)이 있으면 말해주세요!

저에게 있어 해결책은 다음과 같은 것을 설치하는 것이었습니다.Oracle.ManagedDataAccess.CoreNuGet 패키지만 해당.나는 가지고 있었습니다Oracle.ManagedDataAccess오류를 수정하기 위해 제거해야 했습니다.

@Lesiak가 말했듯이, 나는 잘못된 패키지를 사용했습니다(오른쪽은Oracle.ManagedDataAccess.Core.dll하지만 그것은 다른 사람도 빠질 수 있는 오류입니다.왜냐하면 오라클 링크에서 zip 파일을 다운로드할 때 dll 이름은Oracle.ManagedDataAccess.dll대신에Oracle.ManagedDataAccess.Core.dll그것은 오류가 발생하기 쉽습니다.

Oracle을 설치합니다.관리 데이터 액세스.프로젝트의 핵심 너겟 패키지입니다.
아래 코드가 .csproj 파일에 포함되어 있는지 확인합니다.

<PackageReference Include="Oracle.ManagedDataAccess.Core" Version="3.21.1" />

또한 "Oracle"을 제거합니다.프로젝트에서 "관리되는 데이터 액세스"를 선택합니다.
아래 코드가 .csproj 파일에서 제거되었는지 확인합니다.

<PackageReference Include="Oracle.ManagedDataAccess" Version="19.10.1" />

저는 이전 버전의 Oracle을 저장하는 작업을 합니다.관리 데이터 액세스.코어, 마지막 버전에 문제가 있습니다.

언급URL : https://stackoverflow.com/questions/49159199/connect-to-oracle-database-in-dotnet-mvc-application

반응형