hsd*_*hsd 8 c# entity-framework-core asp.net-core
我通过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通过实体框架进行健康检查的任何方法吗?
您似乎遇到了两者无法一起工作的情况。我认为你有两个选择:
首先是直接注册 DbContext,然后从该注册中解析接口。
services.AddDbContext<MyDbContext>(options => options.UseNpgsql(myDatabaseConnectionString));
services.AddTransient<IMyDbContext>(c=>c.GetRequiredService<MyDbContext>());
Run Code Online (Sandbox Code Playgroud)
另一种选择是自己实现健康检查功能。这并不难。
请参阅:EntityFrameworkCoreHealthChecksBuilderExtensions.cs和DbContextHealthCheck.cs
| 归档时间: |
|
| 查看次数: |
7013 次 |
| 最近记录: |