2016-02-07 12 views
22

https://github.com/AutoMapper/AutoMapper/wiki/Migrating-from-static-APIAutoMapper Di chuyển từ API tĩnh

thay đổi này vi phạm hệ thống của tôi.

Trước khi cập nhật, tôi sử dụng:

===> Startup.cs

public class Startup 
{ 
    public Startup(IHostingEnvironment env) 
    { 
    ... 
     MyAutoMapperConfiguration.Configure(); 
    } 
} 

===> MyAutoMapperConfiguration.cs

public class MyAutoMapperConfiguration 
{ 
    public static void Configure() 
    { 
     Mapper.Initialize(a => 
     { 
      a.AddProfile<AbcMappingProfile>(); 
      a.AddProfile<XyzMappingProfile>(); 
      a.AddProfile<QweMappingProfile>(); 
     }); 
    } 
} 

===> AbcMappingProfile.cs

public class AbcMappingProfile : Profile 
{ 
    protected override void Configure() 
    { 
     Mapper.CreateMap<AbcEditViewModel, Abc>(); 
     Mapper.CreateMap<Abc, AbcEditViewModel>(); 
     ... 
    } 
} 

LRI:

'Mapper.CreateMap()' đã lỗi thời: 'API tĩnh sẽ bị xóa trong phiên bản 5.0. Sử dụng cá thể MapperConfiguration và lưu trữ tĩnh khi cần. Sử dụng CreateMapper để tạo instanace bản đồ. '

Tôi có thể sử dụng Mapper.Map. Bây giờ Làm thế nào tôi có thể sử dụng nó

Trả lời

40

Thay vì:

Mapper.CreateMap<AbcEditViewModel, Abc>(); 

Cú pháp mới là:

var config = new MapperConfiguration(cfg => { 
    cfg.CreateMap<AbcEditViewModel, Abc>(); 
}); 

Sau đó:

IMapper mapper = config.CreateMapper(); 
var source = new AbcEditViewModel(); 
var dest = mapper.Map<AbcEditViewModel, Abct>(source); 

(Source with more examples)

+0

Tất cả điều này là trong các tài liệu mà OP liên kết ... – DavidG

+0

thay vì Mapper. Khởi tạo (? Tôi không thể tìm thấy trong liên kết –

+4

Có, có rất nhiều sự nhầm lẫn về những việc cần làm trong Startup.cs để cấu hình AutoMapper và cách sử dụng nó trong Bộ điều khiển. Liệu nó có phải được tiêm ngay bây giờ không? –

9

Thay vì Sử dụng hồ sơ của Automapper IMapperConfigurationExpression mở rộng: Cấu hình

Mapping:

public static class AutoMapperConfig 
{ 
    public static IMapperConfigurationExpression AddAdminMapping(
     this IMapperConfigurationExpression configurationExpression) 
    { 
     configurationExpression.CreateMap<Job, JobRow>() 
      .ForMember(x => x.StartedOnDateTime, o => o.PreCondition(p => p.StartedOnDateTimeUtc.HasValue)) 
      .ForMember(x => x.StartedOnDateTime, o => o.MapFrom(p => p.StartedOnDateTimeUtc.Value.DateTime.ToLocalTime())) 
      .ForMember(x => x.FinishedOnDateTime, o => o.PreCondition(p => p.FinishedOnDateTimeUtc.HasValue)) 
      .ForMember(x => x.FinishedOnDateTime, o => o.MapFrom(p => p.FinishedOnDateTimeUtc.Value.DateTime.ToLocalTime())); 

     return configurationExpression; 
    } 
} 

Integration (Startup.cs vv):

 var mappingConfig = new AutoMapper.MapperConfiguration(cfg => 
     { 
      cfg.AddAdminMapping(); 
     }); 

     services.AddSingleton(x => mappingConfig.CreateMapper()); 
+0

'dịch vụ' trong ngữ cảnh này là gì và làm cách nào để git trình ánh xạ vào bộ điều khiển MVC của tôi? –

+0

Các dịch vụ @PetrusTheron là 'IServiceCollection' mà bạn được tiêm vào phương thức 'public void ConfigureServices (IServiceCollection services)' của Asp.net Core FW. –

Các vấn đề liên quan