使用automapper缺少属性进行映射

时间:2017-03-06 21:32:32

标签: c# automapper

我遇到了将对象映射到视图并使用automapper将其映射回原始对象的问题。

我有以下结构。

var list = listOfT.Select(tmodel=> Mapper.Map<UiModel>(tmodel)).ToList();
在AutoMapperConfiguration类中的

我初始化了我的automapper,如下所示:

TModel

我的适配器接收来自web服务的数据,这些数据将存储在TModel项目列表中 该视图仅显示UiModel的项目,我将执行以下映射将数据返回到视图

var list = listOfUi.Select(uimodel=> Mapper.Map<TModel>(uimodel)).ToList();

当进行所有更改后,我将列表返回给另一个适配器以将数据保存到数据库中

在这个'sqlAdapter'中我将类型timed_mutex的项目映射回来,因为我还想要数据库中的地址属性

lock_guard

但现在我丢失了地址属性的数据。 我是否也必须通过TModel的原始列表?...

1 个答案:

答案 0 :(得分:0)

有几种不同的方法可以解决这个问题。最简单的答案是修改你的UiModel类,使其具有地址属性。如下所示:

  public class UiModel
    {
      public string Name{get;set;}
      public string Location{get;set;} 
      public string address {get;set;}
    }

Automapper首先尝试匹配属性名称。如果找不到匹配项,则必须修改类以使其找到匹配项或编写实现 IValueResolver 接口的类。有关详细信息,请访问https://github.com/AutoMapper/AutoMapper/wiki/Custom-value-resolvers