我正在尝试将使用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;
}
}