2017-04-05 4 views
0

MediatR DI 1.0.1を使用したジミーのコースを受講しました。私はそのコースの例に基づいたプロジェクトを2.0.0にアップグレードしようとしていますが、アップグレードの手順が見つかりません。MediatR Dependency Injectionのアップグレード手順

ここに、コースの具体例があります。私は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);
To:_mediator.Send(query);を待ちます。

更新AsyncRequestHandler:
から:パブリッククラスEmployeeEditHandler:
にAsyncRequestHandler:パブリッククラスEmployeeEditHandler:IAsyncRequestHandler

更新HandleCore:
から:タスクHandleCore(EmployeeEditModelメッセージ)
に非同期で保護オーバーライド:公共非同期タスクハンドル(EmployeeEditModelメッセージ)

更新IAsyncRequest:
投稿者:pub licクラスEmployeeEditQuery:IAsyncRequest
To:public class EmployeeEditQuery:IRequest

関連する問題