映射对象的集合

我试图首次将Automapper引入到应用程序中,但是我一直收到一个错误,说我有一些无效的参数。

我的模特:

namespace StoreGradesLib.Models { public class Store { [Key] public int StoreID { get; set; } [Required] [MaxLength(120)] public string StoreName { get; set; } [Required] [MaxLength(20)] public string StoreNumber { get; set; } [Required] [MaxLength(120)] public string ManagerName { get; set; } [Required] public long PhoneNumber { get; set; } [Required] public string AddressLine1 { get; set; } public string AddressLine2 { get; set; } [Required] public string Postcode { get; set; } [Required] public int WallArea { get; set; } [Required] public int FloorArea { get; set; } [Required] public int NumWindows { get; set; } [Required] public int NumDesks { get; set; } [Required] public int NumDoors { get; set; } [Required] public int StoreGradeID { get; set; } [Required] public bool Active { get; set; } public virtual StoreGrade StoreGrade { get; set; } 1511448896 public Byte[] Timestamp { get; set; } } } 

我的观点模型:

 namespace StoreGradesLib.ViewModels { public class StoreVM { public int StoreID { get; set; } public bool Active { get; set; } public Byte[] Timestamp { get; set; } [Required(ErrorMessage = "Store Name is required.")] [Display(Name = "Store Name")] public string StoreName { get; set; } [Required(ErrorMessage = "Store Number is required")] public string StoreNumber { get; set; } [Required(ErrorMessage = "Store Manager is required.")] [Display(Name = "Manager Name")] public string ManagerName { get; set; } [Required(ErrorMessage = "Contact Number is required.")] [Display(Name = "Phone Number")] public int PhoneNumber { get; set; } [Required(ErrorMessage = "Address Line 1 is required.")] [Display(Name = "Address Line 1")] public string AddressLine1 { get; set; } [Display(Name = "Address Line 2")] public string AddressLine2 { get; set; } [Required(ErrorMessage = "Postcode is required.")] public string Postcode { get; set; } [Required(ErrorMessage = "Must input wall area.")] [Display(Name = "Wall Area")] public int WallArea { get; set; } [Required(ErrorMessage = "Must input floor area.")] [Display(Name = "Floor Area")] public int FloorArea { get; set; } [Required(ErrorMessage = "Must input number of windows.")] [Display(Name = "Windows")] public int NumWindows { get; set; } [Required(ErrorMessage = "Must input number of desks.")] [Display(Name = "Desks")] public int NumDesks { get; set; } [Required(ErrorMessage = "Must input number of doors.")] [Display(Name = "Doors")] public int NumDoors { get; set; } [Required(ErrorMessage = "Store must have a grade.")] public StoreGrade StoreGradeID { get; set; } public string Address { get { return StoreName + " " + AddressLine1 + " " + AddressLine2 + " " + Postcode; } } } } 

创build的映射:

 CreateMap<Store, StoreVM>(); CreateMap<StoreVM, Store>(); 

在我的控制器中,我试图将select的商店映射到storeVM。 我目前正在获得我的商店。

 var stores = db.Store.Include(s => s.StoreGrade); stores = from s in db.Store.Where(s => s.Active.Equals(true)) select s; 

我想将商店的select映射到StoreVM,我已经尝试了以下,但我得到一个无效的参数警告,

 var VMstores = Mapper.Map<Store, StoreVM>(stores); 

我收到错误,最好的重载方法匹配有一些无效的参数。

任何人都可以指向正确的方向吗?

您正在映射集合,而不是单个实体( IEnumerable<Store>IEnumerable<StoreVM> ),所以使用这个映射

 var VMstores = Mapper.Map<IEnumerable<Store>, IEnumerable<StoreVM>>(stores); 

更新! 现在你可以做到这一点:

 var VMstores = stores.Project().To<StoreVM>();