如何解析控制器中依赖IHttpContextAccessor的DbContext



ASP。NET核心MVC 5应用程序使用实体框架核心。

创建注册接口:

public interface IDummyInterfaceForRegistration<T>
{
}

上下文派生自实体框架核心DbContext类:

public partial class EevaContext : DbContext, IDummyInterfaceForRegistration<EevaContext>
{ 
public EevaContext(IHttpContextAccessor httpContextAccessor) {

IHttpContextAccessor对象创建已在startup.cs:中注册

public void ConfigureServices(IServiceCollection services)
{
services.AddHttpContextAccessor();
services.AddTransient<IDummyInterfaceForRegistration<EevaContext>, EevaContext>();

Home Controller将此类声明为依赖项:

public HomeController(EevaContext ctx, ILogger<HomeController> logger)
{

尝试运行应用程序引发异常

InvalidOperationException:无法解析类型的服务"伊娃。实体"EevaContext",同时尝试激活'存储。控制器。家庭控制器。

如何修复此问题?

创建注册接口:

public interface IDummyInterfaceForRegistration<T>
{
}

除非您有其他原因,否则您不需要仅用于注册的接口。

然后替换:

services.AddTransient<IDummyInterfaceForRegistration<EevaContext>, EevaContext>();

带有:

services.AddTransient<EevaContext>();

然后,您的控制器将收到一个EevaContext具体类的实例。

相关内容

  • 没有找到相关文章

最新更新