我正在为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”属性未映射。而且我的数据表或模型中没有容量属性。
答案 0 :(得分:0)
在您的MappingProfile中,您正在配置从System.Data.DataRow
到OneViewModel
的映射。您应该配置的是IDataReader
至OneViewModel
。
// 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);
}
}