我通过TContextService
和TContextImplementation
选项设置了DBContext。
像这样:
services.AddDbContext<IMyDbContext, MyDbContext>(options => options.UseNpgsql(myDatabaseConnectionString));
我尝试从 Microsoft.Extensions.Diagnostics.HealthChecks.EntityFrameworkCore 启用运行状况检查 当我尝试使用此代码时
services.AddHealthChecks().AddDbContextCheck<MyDbContext>()
我从健康终点反应中得到
InvalidOperationException:尝试激活“ Microsoft.Extensions.Diagnostics.HealthChecks.DbContextHealthCheck`1 [MyDbContext]”时,无法解析类型为“ MyDbContext”的服务。 Microsoft.Extensions.DependencyInjection.ActivatorUtilities + ConstructorMatcher.CreateInstance(IServiceProvider提供程序) Microsoft.Extensions.DependencyInjection.ActivatorUtilities.CreateInstance(IServiceProvider提供程序,类型instanceType,对象[]参数) Microsoft.Extensions.DependencyInjection.ActivatorUtilities.GetServiceOrCreateInstance(IServiceProvider提供程序)
您知道任何方法使用两个选项TContextService
和TContextImplementation
进行实体框架的运行状况检查吗?
答案 0 :(得分:1)
您似乎遇到了两者无法一起使用的情况。我认为您有两种选择:
首先是直接注册DbContext,然后通过该注册来解析接口。
services.AddDbContext<MyDbContext>(options => options.UseNpgsql(myDatabaseConnectionString));
services.AddTransient<IMyDbContext>(c=>c.GetRequiredService<MyDbContext>());
另一个选择是自己实施运行状况检查功能。这并不完全困难。
请参阅:EntityFrameworkCoreHealthChecksBuilderExtensions.cs和DbContextHealthCheck.cs