如何在.Net core 2.2中为自定义属性配置AutoMapper?

时间:2019-04-29 18:17:23

标签: c# asp.net-core automapper

我正在为Asp.Net core 2.2应用程序设置AutoMapper。如何为自定义属性进行配置?

->在解决方案中添加了“ AutoMapper.Extensions.Microsoft.DependencyInjection(6.0.0)” NuGet程序包。

->添加了“ services.AddAutoMapper();”到我的startup.cs文件中的“ ConfigureServices”方法。

映射配置文件:

    using AutoMapper;

    namespace Api.AutoMapperProfiles
    {
        public class MappingProfile : Profile
        {
            public MappingProfile()
            {
                var map = CreateMap<System.Data.DataRow, OneViewModel>();
                map.ForAllOtherMembers(opt => opt.Ignore());
                map.ForMember(d => d.one, o => o.MapFrom(s => s["one"]));
                map.ForMember(d => d.two, o => o.MapFrom(s => s["two"]));
            }
        }
    }

控制器文件:

  List<OneViewModel> pr = _mapper.Map<IDataReader, List<OneViewModel>>(ds.Tables[0].CreateDataReader());

我希望数据表中有一个“ OneViewModel”列表。但是我收到一个错误,指出“ Capacity”属性未映射。而且我的数据表或模型中没有容量属性。

1 个答案:

答案 0 :(得分:0)

在您的MappingProfile中,您正在配置从System.Data.DataRowOneViewModel的映射。您应该配置的是IDataReaderOneViewModel

// configure mapping, hope you get the idea
var map = Mapper.CreateMap<IDataReader, CustomerModel>()
  .ForMember(dest => dest.one,
      opt => opt.MapFrom(src => src.GetValue(src.GetOrdinal("one")).ToString())))

// use
using (DataTableReader dr = ds.Tables[0].CreateDataReader())
{
    if (dr.HasRows)
    {
       var pr = AutoMapper.Mapper.Map<IDataReader, IList<OneViewModel>>(dr);
    }
}