我正在尝试使用CQRS注册我的用户。
我正在注册MediatR:
services.AddMediatR(typeof(MyCommand).GetTypeInfo().Assembly);
public class Handler : IRequestHandler<RegisterCommand, object>
{
private readonly MyDbContext _context;
private readonly IMediator _mediator;
private readonly UserManager<User> _userManager;
public Handler(IYawaMVPDbContext context, IMediator mediator, UserManager<User> userManager)
{
_context = context;
_mediator = mediator;
_userManager = userManager;
}
}
我遇到以下例外情况:
InvalidOperationException:无法解析类型的服务 尝试激活时“ MyDbContext” “ Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserOnlyStore
6[MyCore.Domain.Entities.User,MyCore.MyApp.Persistence.MyDbContext,System.String,Microsoft.AspNetCore.Identity.IdentityUserClaim
1 [System.String],Microsoft.AspNetCore.Identity.IdentityUserLogin1[System.String],Microsoft.AspNetCore.Identity.IdentityUserToken
1 [System.String]]”。 Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory.CreateArgumentCallSites(Type serviceType,Type ImplementationType,CallSiteChain,callSiteChain, ParameterInfo []参数,布尔型throwIfCallSiteNotFound)InvalidOperationException:构造请求处理程序时出错 类型 MediatR.IRequestHandler`2 [MyCore.MyApp.Application.Users.Commands.Register.RegisterCommand,System.Object]。
在容器中注册您的处理程序。有关示例,请参见GitHub中的示例。
任何帮助表示赞赏。
答案 0 :(得分:0)
添加服务以解决启动文件中的DbContext
services.AddDbContext<IYawaMVPDbContext, YourDbContextImplementation>(options =>
options.UseSqlServer(Configuration.GetConnectionString("yourConnectionString")));
答案 1 :(得分:0)
我认为以下代码没有问题
services.AddMediatR(typeof(MyCommand).GetTypeInfo().Assembly);
处理所有MediatR IRequest和IRequestHandlers。
但是您创建了一个IYawaMVPDbContext接口及其实现类,该接口无法由该MediatR.Extensions.Microsoft.DependencyInjection
DBContext在应用程序启动期间通过依赖项注入进行注册,以便可以将它们自动提供给使用服务的组件-像这样手动注册
services.AddDbContext<IYawaMVPDbContext, DbContextImplementation>(options =>
options.UseSqlServer(Configuration.GetConnectionString("ConnectionString")));