2017-04-05 176 views
0

我参加了Jimmy的MediatR DI 1.0.1课程。我试图将基于该课程示例的项目升级到2.0.0,但我找不到任何升级步骤。MediatR依赖注入的升级步骤

下面是该课程的一个具体示例。我已经将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

我发现吉米用MediatR 2.0.0重写了Contoso,给了我答案。这里是我必须做的变化从1.0.1到2.0.0:

更新控制器操作:
从:await _mediator.SendAsync(query);
收件人:await _mediator.Send(query);

更新AsyncRequestHandler:
来源:公共类EmployeeEditHandler:AsyncRequestHandler
为:公共类EmployeeEditHandler:IAsyncRequestHandler

更新HandleCore:
来源:保护覆盖异步任务HandleCore(EmployeeEditModel消息)
:公开async Task Handle(EmployeeEditModel message)

更新IAsyncRequest:
From:pub lic类EmployeeEditQuery:IAsyncRequest
致:public class EmployeeEditQuery:IRequest