使用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个回答

1
Automapper只能将您的结构展开为更简单的结构。但是将简单的类映射到更具体的内容是不可能的。
我建议仅使用表中的第一个条目填充基本字段,如NameAddressPhoneNumber,并迭代结果以填充您的UniqueData列表。
我没有看到更简单的方法,因为对于每个可能的映射而言,如果不使用单独的循环,您将多次获取基本数据。
如果您不介意使用另一个工具,也许您可以看看ValueInjecter。我听说您可以使用此工具进行双向映射。

1
谢谢,我之前没听说过valueinjecter。我会去了解一下的。 - KevinUK

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接