如何将数据表映射到" DTO"使用Express Mapper

时间:2016-10-12 07:00:22

标签: asp.net ado.net mapper

我正在使用ASP.NET Web API和C#。因为我是Express Mapper的新手,我正在使用返回结果列表的ADO.NET代码。如何使用Express Mapper进行映射?

1 个答案:

答案 0 :(得分:1)

这是一个测试,演示如何在ExpressMapper中使用自定义映射器。我希望你能够相应地使用它 -

    public static void Main()
    {
        var ds = new DataSet();
        var dt = new DataTable();
        dt.Columns.Add("Name", typeof(string));
        dt.Columns.Add("Age", typeof(int));
        dt.Rows.Add("Test", 10);
        dt.Rows.Add("Test2", 10);
        ds.Tables.Add(dt);

        var mapped = Mapper.Map<DataTable, List<RequestModel>>(ds.Tables[0], new CustomTypeMapper());

    }

其中 -

class RequestModel
{
    public int Age { get; set; }
    public string Name { get; set; }
}

class CustomTypeMapper : ICustomTypeMapper<DataTable, List<RequestModel>>
{
    public List<RequestModel> Map(IMappingContext<DataTable, List<RequestModel>> context)
    {
        if (context.Source == null)
            throw new ArgumentNullException();

        var output = new List<RequestModel>();
        foreach (DataRow row in context.Source.Rows)
        {
            output.Add(new RequestModel
            {
                Age = row.Field<int>("Age"),
                Name = row.Field<string>("Name")
            });
        }

        return output;
    }
}