AutoMapper和导航属性

时间:2016-01-28 20:51:41

标签: c# entity-framework model-view-controller automapper viewmodel

是否有人遇到以下情况。我有一个MVC应用程序,我正在使用实体框架。我有一个外键,我填入一个下拉框,当用户选择他们的选择并提交表单时,我收到一个关于无法映射的错误。

我有以下要点:

sed -i.bak '/soemthings;/r script.tmp' some.sh

cat some.sh
{
   soemthings;
   # the script
   {
      hello there
      im the new script
      and multilines
   }

   soemthings_other;
}

我有以下视图模型

public Class City{
 public int Id {get; set;}
 public string Name {get; set;}
}


public class Property {
 public int Id {get; set;}
 public string Description {get; set;}
 public Virtual City City {get; set;}
}

我有以下AutoMapper配置:

public class AddPropertyVM {

  public AddPropertyViewModel(IEnumerable<City> cities){
    _cities = cities;
  } 

  public AddPropertyViewModel(){}

  public string Description {get; set;}
  public int SelectedCityId {get; set;}
  public IEnumerable<SelectListItem> CitiesItems {
    get {
      return new SelectList(_cities, "Id", "Name");
    }
  }

  private IEnuermable<City> _cities {get; set;}
}

当我尝试将VM映射回属性实体时,如下所示:

config.CreateMap<Property, AddPropertyViewModel>().ReverseMap();

我收到以下错误:

缺少类型映射配置或不支持的映射。

映射类型: Int32 - &gt;市 System.Int32 - &gt; Test.Entities.City

目的地路径: Property.City.City

来源价值: 2

有谁知道为什么会这样?非常感谢任何帮助/指导。

就是这么清楚。我正试图让City从SelectedCityId回来。

我已经尝试过设置AfterMap,但我仍然遇到同样的问题:

var newProperty = AutoMapper.Mapper.Map<AddPropertyViewModel, Property>(property);

1 个答案:

答案 0 :(得分:0)

你的属性类有单个对象City但另一个类有ienumerable ......

private IEnuermable<City> _cities {get; set;}

您应该使两个类彼此兼容。