自动映射器 - DataTable到通用类型(用于DTO)映射不起作用

时间:2017-01-12 18:09:33

标签: c# datatable automapper

我正在尝试将使用Ado.Net检索到的DataTable转换为DTO。传递的类型为“T”的DTO与DataTable具有完全相同的字段和相同的数据类型,但我得到以下异常:

这可行吗? Geekytidbits的Brady Holt有一篇旧文章要做以下事情,但DynamicMap现在已经过时了!

列出人物= AutoMapper.Mapper.DynamicMap>( sourceDataTable.CreateDataReader());

找到未映射的成员。查看下面的类型和成员。添加自定义映射表达式,忽略,添加自定义解析程序或修改源/目标类型

IDataReader - > UserDto(目的地成员列表) System.Data.IDataReader - > MyApp.Console.UserDto(目标成员列表)

未映射的属性: UserId // int类型 FirstName //字符串类型 LastName //字符串类型

以下代码:

public static class DtoTransformDataTable<T>
{
    public static IEnumerable<T> JustDoIt(DataTable dt)
    {
              var config = new MapperConfiguration(cfg =>
        {
            cfg.CreateMap<IDataReader, IEnumerable<T>>();
        });

              var mapper = config.CreateMapper();

              try
              {
                  mapper.ConfigurationProvider.AssertConfigurationIsValid();
              }
              catch (Exception ex)
              {
                  throw ex;
              }

              var listOfT = mapper.Map<List<T>>(dt.CreateDataReader());

        return listOfT;
    }
}

1 个答案:

答案 0 :(得分:0)

在另一篇帖子中有人说已经从Automapper 4.0中删除了IDataReader支持。

但我在SO

找到答案