繁体   English   中英

自动映射器缺少属性的映射

[英]mapping with automapper missing properties

我在使用自动映射器将对象映射到视图并返回到原始对象时遇到问题。

我有以下结构。

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

在类AutoMapperConfiguration中,我有一个自动映射器的初始化,如下所示:

cfg.CreateMap < TModel, UiModel  >();
cfg.CreateMap < UiModel,TModel > ();

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

var list = listOfT.Select(tmodel=> Mapper.Map<UiModel>(tmodel)).ToList();

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

在此“ sqlAdapter”中,我将项目映射回TModel类型,因为我还希望在数据库中使用address属性

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

但是现在我丢失了address属性的数据。 我还必须通过TModel的原始列表吗?...

您可以通过几种不同的方法来解决此问题。 最简单的答案是修改UiModel类,使其具有address属性。 所以像这样:

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

自动映射器通过首先尝试匹配属性名称来工作。 如果找不到匹配项,则必须修改您的类以使其找到匹配项,或者编写一个实现IValueResolver接口的类。 有关更多信息,请参见https://github.com/AutoMapper/AutoMapper/wiki/Custom-value-resolvers

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM