使用AutoMapper将平面结构映射到对象?

时间:2013-10-29 12:16:50

标签: automapper

从存储过程返回的数据有3列重复数据:

Name | Address | PhoneNumber | UniqueCol1 | UniqueCol2

理想情况下,我希望我的模型通过仅存储一次值并且具有唯一数据的集合来显示重复数据。

public class MyViewModel
{
  public string Name {get;set;}
  public string Address {get;set;}
  public string PhoneNumber {get;set;}
  public List<MyModel> UniqueData {get;set;}

  public class MyModel
  {
    public string UniqueCol1 {get;set;}
    public string UniqueCol2 {get;set;}
  }
}

这意味着我想将一组结果映射到MyViewModel的单个对象:

return Mapper.Map<List<StoredProcedureObject>, MyViewModel>(result);

这是我收到错误的地方,因为我假设我有一些我需要做的配置:

Mapping types:
List`1 -> MyViewModel

关于让这个工作失效的任何想法?

1 个答案:

答案 0 :(得分:1)

Automapper只能将您的结构扁平化为更简单的东西。但是,将一个简单的类映射到更具体的类是不可能的。

我建议您只使用表格中的第一个条目填充基本字段,例如NameAddressPhoneNumber并迭代结果以填充{{1}列表。
我没有看到更简单的方法,因为每次可能的映射并且不使用单独的循环,您将多次获得基础数据。

如果您不介意使用其他工具,也许您会看一下ValueInjecter。我听说你可以使用这个工具进行双向映射。