首页 > 解决方案 > InvalidOperationException:尝试激活“Controller”时无法解析“UnitOfWork”类型的服务

问题描述

我在尝试使用 netcore 3.0 实现 unitofwork 时遇到了一个恼人的错误

InvalidOperationException:尝试激活“ShopAPI.Controllers.CategoryController”时无法解析“DataAccess.EF.UnitOfWork”类型的服务。

启动.cs

public void ConfigureServices(IServiceCollection services)
{
    services.AddTransient<IUnitOfWork, UnitOfWork>();
    services.AddDbContext<ApplicationDbContext>(x => x.UseSqlServer(_config.GetConnectionString("ApplicationDbContext")));

    services.AddControllers().AddNewtonsoftJson(options =>
        options.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore
    );
    services.AddControllers();

    var mapperConfig = new MapperConfiguration(mc =>
    {
        mc.AddProfile(new AutoMapperConfigurationProfile());
    });

    IMapper mapper = mapperConfig.CreateMapper();
    services.AddSingleton(mapper);
}

工作单位

private readonly ApplicationDbContext _context;

public ICategoryRepository CategoryRepositoryAsync => new CategoryRepository(_context);
public UnitOfWork(ApplicationDbContext context)
{
    _context = context;
}

类别存储库

private readonly ApplicationDbContext _context;

public CategoryRepository(ApplicationDbContext context) 
    :base(context)
{
    _context = context;
}

应用程序数据库上下文

public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options) 
    : base(options)
{
}

控制器

private readonly IUnitOfWork _unitOfWork;

public CategoryController(UnitOfWork unitOfWork)
{
    _unitOfWork = unitOfWork;
}

我将代码示例保留在 DI 上,因为我觉得有问题,或者我完全错过了一些东西。我刚开始使用 .NET Core,我不确定这有什么问题。在此之前我用谷歌搜索,也得到了一些白头发。

标签: c#.net-coreasp.net-core-3.1

解决方案


推荐阅读