共用方式為


.NET Aspire Oracle Entity Framework 元件

在本文中,您將瞭解如何使用 .NET AspireOracleEntity Framework Core 整合。 Aspire.Oracle.EntityFrameworkCore 函式庫用於在 DI 容器中將 System.Data.Entity.DbContext 註冊為單例,以便連接到 Oracle 數據庫。 它也會啟用連線共用、重試、健康情況檢查、記錄和遙測。

開始

您需要 Oracle 資料庫和連接字串,才能存取資料庫。 若要開始使用 .NET AspireOracleEntity Framework Core 整合,請在所需的 client 專案中安裝 📦AspireOracleEntityFrameworkCore NuGet 套件。

dotnet add package Aspire.Oracle.EntityFrameworkCore

如需詳細資訊,請參閱 dotnet add package管理 .NET 應用程式中的套件相依性

範例使用方式

在 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 不會使用 ConnectionStrings 組態區段,因為它預期在呼叫時已經註冊 DbContext

如需詳細資訊,請參閱 ODP.NET 檔案

使用組態提供者

.NET Aspire Oracle Entity Framework Core 整合支援 Microsoft.Extensions.Configuration。 它會使用 Aspire:Oracle:EntityFrameworkCore 鍵從組態載入 OracleEntityFrameworkCoreSettings

下列範例顯示一個 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.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

另請參閱