将AutoMapper与数据读取器配合使用

Vik*_*ram 7 .net c# automapper asp.net-mvc-4

我经历了如何轻松地将DataReader转换为List <T>?

我希望在上面的链接中实现类似于接受的内容.

Scenrio:

我正在使用OdbcDataReader从数据库中检索.

我有一个模型类.仅供参考,此类的属性是数据库中列名的精确副本.我需要将这些列映射到属性并返回List这可以使用Automapper完成.

Via*_*nev 11

像这样的东西

public List<T> ReadData<T>(string queryString)
{
    using (var connection = new SqlConnection(constr))
        using (var command = new SqlCommand(queryString, connection))
        {
            connection.Open();
            using (var reader = command.ExecuteReader())
                if (reader.HasRows)
                    return Mapper.DynamicMap<IDataReader, List<T>>(reader);
        }

    return null;
}
Run Code Online (Sandbox Code Playgroud)

定义你的课程

public class MarkType
{
    public int id { get; set; }
    public string name { get; set; }
    public DateTime inserted { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

使用

List<MarkType> lst = _helper.ReadData<MarkType>("SELECT [id],[name],[inserted] FROM [marktype]");
Run Code Online (Sandbox Code Playgroud)

  • 对于2014年12月29日之后提及此问题的任何人,Automapper项目已取消了对Automapper 4.0及更高版本中"IDataReader"的支持.请参阅[commit](https://github.com/AutoMapper/AutoMapper/commit/33831e3b53ed1cd698558daa2db483906ec5c13a).版本3.1.1(在NuGet上可用)仍具有此功能. (8认同)
  • 有一个[nuget包](https://www.nuget.org/packages/AutoMapper.Data)将其添加回来(目前处于测试阶段).[GitHub AutoMapper.Data](https://github.com/AutoMapper/AutoMapper.Data) (4认同)