MediatR依赖注入的升级步骤是什么?

时间:2017-04-05 15:55:30

标签: mediatr

我参加了使用MediatR DI 1.0.1的Jimmy课程。我尝试将基于该课程示例的项目升级到2.0.0但我无法找到任何升级步骤。

这是课程的一个具体例子。我已将IAsyncRequest更改为IRequest,这似乎是正确的。剩下的错误是:

public class EmployeeEditHandler : AsyncRequestHandler<EmployeeEditModel> 

protected override async Task HandleCore(EmployeeEditModel message)  

AsyncRequestHandler应该更改为什么? HandleCore需要更改吗?

namespace EmployeeDirectory.ViewModels
{
    using MediatR;
    //Other using statements removed for this example

    public class EmployeeEditQuery : IAsyncRequest<EmployeeEditModel>
    {
        public Guid Id { get; set; }
    }

    public class EmployeeEditModel : IAsyncRequest
    {
        public Guid Id { get; set; }
        public string Name { get; set; }
    }

    public class EmployeeEditQueryHandler 
        : IAsyncRequestHandler<EmployeeEditQuery, EmployeeEditModel>
    {
        private readonly DirectoryContext _dbContext;

        public EmployeeEditQueryHandler(DirectoryContext dbContext)
        {
            _dbContext = dbContext;
        }
        public async Task<EmployeeEditModel> Handle(EmployeeEditQuery message)
        {
            var model = await _dbContext
                .Employees
                .Where(e => e.Id == message.Id)
                .ProjectTo<EmployeeEditModel>()
                .SingleOrDefaultAsync();

            return model;
        }
    }

    public class EmployeeEditHandler : AsyncRequestHandler<EmployeeEditModel>
    {
        private readonly DirectoryContext _dbContext;

        public EmployeeEditHandler(DirectoryContext dbContext)
        {
            _dbContext = dbContext;
        }

        protected override async Task HandleCore(EmployeeEditModel message)
        {
            var employee = await _dbContext.Employees
                .SingleOrDefaultAsync(e => e.Id == message.Id);

            Mapper.Map(message, employee);
        }
    }
}

1 个答案:

答案 0 :(得分:1)

我发现Jimmy使用MediatR 2.0.0重写了Contoso,这给了我答案。以下是我必须做的从1.0.1到2.0.0的更改:

更新控制器操作:
From:await _mediator.SendAsync(query);
要:等待_mediator.Send(查询);

更新AsyncRequestHandler:
来自:公共类EmployeeEditHandler:AsyncRequestHandler
收件人:public class EmployeeEditHandler:IAsyncRequestHandler

更新HandleCore:
From:protected override async Task HandleCore(EmployeeEditModel message)
To:public async Task Handle(EmployeeEditModel message)

更新IAsyncRequest:
来自:公共类EmployeeEditQuery:IAsyncRequest
收件人:public class EmployeeEditQuery:IRequest