Health check are important, both of our selves, but also of ourrrrr micro-services. This is something I came across lately – a health check of your connection to a database via EF Core context. Let’s check this out!
To add a health check to EF Core you need a project:
- WebAPI with .Net Core, I’m using 3.1
- with Entity Framework Core and some DbContext
First install a nuget package
Microsoft.Extensions.Diagnostics.HealthChecks.EntityFrameworkCore
Now go to Startup.cs class and add this code in ConfigureServices method:
services .AddHealthChecks() .AddDbContextCheck<aspnetcoreContext>();
In the Configure method in the same class add:
app.UseEndpoints(endpoints => { endpoints.MapHealthChecks("/health"); });
Now run a service and go to endpoint /health
, you should see:
Notice that I didn’t have to add any Controller class to make it work, it works out of the box.
But does it really check the database status? Now let’s break the connection string, and see what result will be:
So what it does underneath? Let’s check in SQL Server Profiles if it connects to DB.
So it really does call DB in this check – awesome.
Simple and effective. That’s how code should look like. You can find full code in my GitHub: https://github.com/mikuam/MichalBialecki.com.OData.Search
Hope you enjoyed this, cheers!