gpt4 book ai didi

c# - 通过 TContextService 和 TContextImplementation 对 AddDbContextCheck 进行健康检查

转载 作者:行者123 更新时间:2023-12-03 23:10:40 29 4
gpt4 key购买 nike

我通过 TContextService 设置我的 DBContext和 TContextImplementation选项。
像这样的东西:
services.AddDbContext<IMyDbContext, MyDbContext>(options => options.UseNpgsql(myDatabaseConnectionString));
我尝试从 启用健康检查Microsoft.Extensions.Diagnostics.HealthChecks.EntityFrameworkCore
当我尝试使用此代码时
services.AddHealthChecks().AddDbContextCheck<MyDbContext>()我从健康终点响应中得到

InvalidOperationException: Unable to resolve service for type 'MyDbContext' while attempting to activate 'Microsoft.Extensions.Diagnostics.HealthChecks.DbContextHealthCheck`1[MyDbContext]'. Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher.CreateInstance(IServiceProvider provider) Microsoft.Extensions.DependencyInjection.ActivatorUtilities.CreateInstance(IServiceProvider provider, Type instanceType, object[] parameters) Microsoft.Extensions.DependencyInjection.ActivatorUtilities.GetServiceOrCreateInstance(IServiceProvider provider)



你知道使用两个选项的任何方法 TContextServiceTContextImplementation通过 Entity Framework 进行健康检查?

最佳答案

您似乎遇到了两者无法一起工作的情况。我认为你有两个选择:

首先是直接注册 DbContext,然后从这个注册中解析接口(interface)。

services.AddDbContext<MyDbContext>(options => options.UseNpgsql(myDatabaseConnectionString));
services.AddTransient<IMyDbContext>(c=>c.GetRequiredService<MyDbContext>());

另一种选择是自己实现健康检查功能。这并不难。

见: EntityFrameworkCoreHealthChecksBuilderExtensions.csDbContextHealthCheck.cs

关于c# - 通过 TContextService 和 TContextImplementation 对 AddDbContextCheck 进行健康检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57977102/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com