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

问题描述 投票:0回答:1

我正在为我的Asp.Net核心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”列表。但是我收到一个错误,即“容量”属性未映射。并且我的数据表或模型中没有容量属性。

c# asp.net-core automapper
1个回答
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);
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.