EntityFramework Core健康檢查

Jeffcky發表於2020-12-02

前言

.NET Core提供對應方法可進行健康檢查,那麼在EF Core中是否也提供了相應的方式呢?EF Core 2.2+(包含2.2)版本提供了針對上下文的健康檢查,接下來我們直接利用.NET 5.0版本進行演示

EntityFramework Core 5.0健康檢查

我們知道在.NET Core中使用健康檢查直接在對應服務中新增健康檢查擴充套件方法即可,如下:

services.AddHealthChecks()

在上述基礎上我們再新增針對EF Core的診斷包才能進行健康檢查,首先,我們安裝診斷包

Microsoft.Extensions.Diagnostics.HealthChecks.EntityFrameworkCore

接下來我們使用上述診斷包針對如下上下文健康檢查擴充套件方法AddDbContext,同時我們注入示例上下文,如下:

services.AddHealthChecks().AddDbContextCheck<EFCoreDbContext>();

services.AddDbContext<EFCoreDbContext>(options =>
{
    options.UseSqlServer(@"Server=.;Database=EFCore;Trusted_Connection=True;");
});

最後我們在路由中對映健康檢查路由節點,如下:

app.UseEndpoints(endpoints =>
{
    endpoints.MapHealthChecks("/context/health");
});

接下來我們來訪問上述健康檢查路由節點看看

 

我們看到如上將返回Healthy字串,說明一切健康(正常),當我們注入針對EF Core的診斷包後,到底是根據什麼來判斷是否健康或正常呢,不用講,我們都能猜到,那就是對所配置資料庫的訪問

 

反之,當非健康狀態時,此時頁面和控制檯都將返回對應資訊,如下:

總結

? EF Core健康檢查出現於 2.2+(包含2.2)

? 安裝診斷包:Microsoft.Extensions.Diagnostics.HealthChecks.EntityFrameworkCore

? 在新增健康檢查擴充套件方法基礎上,新增針對上下文健康檢查擴充套件方法AddDbContextCheck

相關文章