本文介绍了对象的集合地图的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图Automapper引入的第一次申请,但我不断收到一个错误说我有一些无效参数

I am trying to introduce Automapper into an application for the first time, but I keep getting an error saying I have some invalid arguments.

我的模型:

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; }

        [Timestamp]
        public Byte[] Timestamp { get; set; }
    }
}



我的视图模型:

My View Model:

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;
            }
        }
    }
}



创建映射:

Created mappings:

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



在我的控制,我试图映射选择门店到storeVM。我目前得到我的店如此;

Within my controller, I am trying to map a selection of stores to storeVM. I am currently getting my stores as so;

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



我想映射商店StoreVM的选择,我曾尝试以下,但我得到无效参数的警告,

I am wanting to map the selection of stores to StoreVM, I have tried the following, but i get an invalid parameters warning,

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



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

I am receiving the error that the best overloaded method match has some invalid arguments.

任何人都可以点我在正确的方向?

Can anyone point me in the right direction?

推荐答案

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

You are mapping collections, not single entities (IEnumerable<Store> to IEnumerable<StoreVM>), so use this mapping

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

这篇关于对象的集合地图的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

07-05 11:22