我正在尝试注册我的用户,使用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;
}
}
我得到以下例外:
无效的Exception:无法解析类型的服务 尝试激活时的" 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.IdentityUsityUserlogin1[System.String],Microsoft.AspNetCore.Identity.IdentityUserToken
1 [System.Styste.String]]'。 microsoft.extensions.dependentiondoction.servicelookup.callsitefactory.createargumentCallsites(type ServiceType,类型实现类型,Callitechain Callitechain, 参数参数,bool throwcallsitenotfound(无效的exception:错误构造处理程序以要求 类型 MediaTr.ireQuestHandler`2 [mycore.myapp.application.users.commands.register.register.registercommand,system.Object]。
用容器注册您的处理程序。有关示例,请参见Github中的样品。
任何帮助。
添加服务以解决启动文件中的dbcontext
services.AddDbContext<IYawaMVPDbContext, YourDbContextImplementation>(options =>
options.UseSqlServer(Configuration.GetConnectionString("yourConnectionString")));
我认为以下代码没有问题
services.AddMediatR(typeof(MyCommand).GetTypeInfo().Assembly);
处理所有媒体iRequest和iirequestHandlers。
但是您创建了一个iyawamvpdbcontext接口及其实现类,该类别无法通过该MediatR.Extensions.Microsoft.DependencyInjection
dbContext在申请启动期间注册并注入依赖项,以便可以自动提供消费服务的组件 - 手动注册此功能如
services.AddDbContext<IYawaMVPDbContext, DbContextImplementation>(options =>
options.UseSqlServer(Configuration.GetConnectionString("ConnectionString")));