前言
.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