首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AutoMapper和IDataReader

AutoMapper和IDataReader
EN

Stack Overflow用户
提问于 2018-01-10 13:12:48
回答 1查看 1K关注 0票数 1

我想将数据从IDateReader映射到某个类,但不能简单地这样做。我编写了以下代码:

代码语言:javascript
复制
 cfg.CreateMap<IDataReader, MyDto>()
      .ForMember(x => x.Id, opt => opt.MapFrom(rdr => rdr["Id"]))
      .ForMember(x => x.Name, opt => opt.MapFrom(rdr => rdr["Name"]))
      .ForMember(x => x.Text, opt => opt.MapFrom(rdr => rdr["Text"]));

UPD:我尝试使用Nuget的Automapper.Data,但是它依赖于NETStandard.Library,但是我使用了.NET Framework4.5,但是这种方式对我不利,因为我必须描述每一列的映射规则。是否有可能避免描述所有这些规则?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-10 13:27:13

您可以使用ITypeConverter,如下所示:

代码语言:javascript
复制
public class DataReaderConverter<TDto> : ITypeConverter<IDataReader, TDto> where TDto : new
{
    public TDto Convert(IDataReader source, TDto destination, ResolutionContext context)
    {
        if (destination == null)
        {
            destination = new TDto();
        }

        typeof(TDto).GetProperties()
            .ToList()
            .ForEach(property => property.SetValue(destination, source[property.Name]));
    }
}


cfg.CreateMap<IDataReader, MyDto>().ConvertUsing(new DataReaderConverter<MyDto>());
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48188280

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档