c# - 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,我不确定这有什么问题。在此之前我用谷歌搜索,也得到了一些白头发。
解决方案
推荐阅读
- iis - S3 图像 url 不适用于水晶报告 2008
- javascript - 从键/值对创建复杂对象
- python - 如何比较现在时间和选择时间
- r - 将日期转换为月份和年份月份的虚拟日期
- routing - 如何将流量从我的 VM 上的 IP 路由到 Kubernetes 的 NodePort?
- javascript - 使用 AJAX 和 JQUERY 和 Rails 的错误评论位置
- xamarin.forms - 无法使用正确的设置访问 AzureAD 中的公司租户
- vue.js - 如何在 Vuetify 应用程序中使用大纲图标?
- c# - 无法在视图上添加“at sign”
- php - 管理员在表单中为所有用户重置密码字段