다음을 통해 공유


.NET Aspire Oracle Entity Framework 구성 요소

이 문서에서는 .NET AspireOracleEntity Framework Core 통합을 사용하는 방법을 알아봅니다. Aspire.Oracle.EntityFrameworkCore 라이브러리는 Oracle 데이터베이스에 연결하기 위해 DI 컨테이너에서 System.Data.Entity.DbContext 싱글톤으로 등록하는 데 사용됩니다. 또한 연결 풀링, 재시도, 상태 검사, 로깅 및 원격 분석을 사용할 수 있습니다.

시작

데이터베이스에 액세스하려면 Oracle 데이터베이스 및 연결 문자열이 필요합니다. .NET Aspire Oracle Entity Framework Core 통합을 시작하려면 📦Aspire을 설치하십시오.Oracle.EntityFrameworkCore NuGet 패키지를 사용하는 client 프로젝트에서 설치하세요.

dotnet add package Aspire.Oracle.EntityFrameworkCore

자세한 내용은 dotnet add package 또는 manage package dependencies in .NET applications.

예제 사용

client사용 중인 프로젝트의 Program.cs 파일에서 AddOracleDatabaseDbContext 확장을 호출하여 종속성 주입 컨테이너를 통해 사용할 System.Data.Entity.DbContext을 등록하십시오.

builder.AddOracleDatabaseDbContext<MyDbContext>("oracledb");

그런 다음 종속성 주입을 사용하여 DbContext 인스턴스를 검색할 수 있습니다. 예를 들어 서비스에서 client 검색하려면 다음을 수행합니다.

public class ExampleService(MyDbContext context)
{
    // Use context...
}

Oracle 데이터베이스의 특정 옵션을 구성하거나 다른 방법으로 DbContext 등록해야 할 수도 있습니다. 이 경우 EnrichOracleDatabaseDbContext 확장 메서드를 호출합니다. 예를 들면 다음과 같습니다.

var connectionString = builder.Configuration.GetConnectionString("oracledb");

builder.Services.AddDbContextPool<MyDbContext>(
    dbContextOptionsBuilder => dbContextOptionsBuilder.UseOracle(connectionString));

builder.EnrichOracleDatabaseDbContext<MyDbContext>();

앱 호스트 사용

앱 호스트에서 Oracleserver 리소스를 모델링하려면 앱 호스트 프로젝트에서 📦Aspire.Hosting.Oracle NuGet 패키지를 설치합니다.

dotnet add package Aspire.Hosting.Oracle

앱 호스트 프로젝트에서 Oracle 컨테이너를 등록하고 다음 방법을 사용하여 연결을 사용합니다.

var builder = DistributedApplication.CreateBuilder(args);

var oracle = builder.AddOracle("oracle");
var oracledb = oracle.AddDatabase("oracledb");

var myService = builder.AddProject<Projects.MyService>()
                       .WithReference(oracledb);

암호를 명시적으로 제공하려는 경우 매개 변수로 제공할 수 있습니다. 다음 대체 예제를 고려합니다.

var password = builder.AddParameter("password", secret: true);

var oracle = builder.AddOracle("oracle", password);
var oracledb = oracle.AddDatabase("oracledb");

var myService = builder.AddProject<Projects.MyService>()
                       .WithReference(oracledb);

자세한 내용은외부 매개 변수를 참조하세요.

구성

.NET Aspire Oracle Entity Framework Core 통합은 프로젝트의 요구 사항 및 규칙에 따라 데이터베이스 연결을 구성하는 여러 옵션을 제공합니다.

연결 문자열 사용

ConnectionStrings 구성 섹션에서 연결 문자열을 사용하는 경우 builder.AddOracleDatabaseDbContext<TContext>()호출할 때 연결 문자열의 이름을 제공할 수 있습니다.

builder.AddOracleDatabaseDbContext<MyDbContext>("myConnection");

그런 다음 ConnectionStrings 구성 섹션에서 연결 문자열을 검색합니다.

{
  "ConnectionStrings": {
    "myConnection": "Data Source=TORCL;User Id=myUsername;Password=myPassword;"
  }
}

EnrichOracleDatabaseDbContext는 호출 시점에 DbContext가 등록되어 있기를 기대하기 때문에 ConnectionStrings 구성 섹션을 사용하지 않습니다.

자세한 내용은 ODP.NET 설명서참조하세요.

구성 공급자 사용

.NET Aspire Oracle Entity Framework Core 통합은 Microsoft.Extensions.Configuration를 지원합니다. 구성에서 OracleEntityFrameworkCoreSettingsAspire:Oracle:EntityFrameworkCore 키를 사용하여 로드합니다.

다음 예제는 사용 가능한 옵션 중 일부를 구성하는 appsettings.json의 예시를 보여 줍니다.

{
  "Aspire": {
    "Oracle": {
      "EntityFrameworkCore": {
        "DisableHealthChecks": true,
        "DisableTracing": true,
        "DisableMetrics": false,
        "DisableRetry": false,
        "Timeout": 30
      }
    }
  }
}

Timeout 속성은 초 단위입니다. 앞의 예제와 같이 설정하면 시간 제한은 30초입니다.

인라인 대리자 사용

Action<OracleEntityFrameworkCoreSettings> configureSettings 델리게이트를 전달하여 일부 또는 모든 옵션을 인라인으로 설정할 수 있으며, 예를 들어 코드 내에서 상태 검사를 비활성화할 수 있습니다.

builder.AddOracleDatabaseDbContext<MyDbContext>(
    "oracle",
    static settings => settings.DisableHealthChecks  = true);

또는

builder.EnrichOracleDatabaseDbContext<MyDbContext>(
    static settings => settings.DisableHealthChecks  = true);

건강 검사

기본적으로 .NET.NET Aspire 통합은 모든 서비스에 대해 상태 검사를 활성화합니다. 자세한 내용은 .NET.NET Aspire 통합 개요참조하세요.

.NET Aspire Oracle Entity Framework Core 통합은 TContext에 지정된 데이터베이스 연결을 확인하는 기본 상태 점검을 등록합니다. 상태 검사는 기본적으로 사용하도록 설정되며 구성의 DisableHealthChecks 속성을 사용하여 사용하지 않도록 설정할 수 있습니다.

관찰 가능성 및 원격 분석

통합은 로깅, 추적 및 메트릭 구성을 자동으로 설정하며, 이를 관찰성핵심 요소라고도 . 통합 관찰 가능성 및 원격 분석에 대한 자세한 내용은 .NET.NET Aspire 통합 개요참조하세요. 지원 서비스에 따라 일부 통합은 이러한 기능 중 일부만 지원할 수 있습니다. 예를 들어 일부 통합은 로깅 및 추적을 지원하지만 메트릭은 지원하지 않습니다. 구성 섹션에 제시된 기술을 사용하여 원격 분석 기능을 사용하지 않도록 설정할 수도 있습니다.

로깅

.NET Aspire Oracle Entity Framework Core 통합은 다음 로그 범주를 사용합니다.

  • Microsoft.EntityFrameworkCore.Database.Command.CommandCreated
  • Microsoft.EntityFrameworkCore.Database.Command.CommandExecuting
  • Microsoft.EntityFrameworkCore.Database.Command.CommandExecuted
  • Microsoft.EntityFrameworkCore.Database.Command.CommandError

추적

.NET Aspire Oracle Entity Framework Core 통합은 OpenTelemetry을 사용하여 다음 추적 활동을 출력합니다.

  • OpenTelemetry.Instrumentation.EntityFrameworkCore

메트릭스

.NET Aspire Oracle Entity Framework Core 통합은 현재 다음 메트릭을 지원합니다.

  • Microsoft.EntityFrameworkCore

참고 항목