AutoMapper Not Mapping ...没有错误抛出

时间:2015-10-23 17:53:25

标签: c# automapper

我的WPF应用程序中有以下内容:

public static class MappingCreator
{
    public static void CreateMaps()
    {
        Mapper.CreateMap<SO.Services.Data.ServiceModel.Types.Customer, Customer>();
        Mapper.CreateMap<List<SO.Services.Data.ServiceModel.Types.CustomerSearchResult>, List<CustomerSearchResult>>();

        Mapper.AssertConfigurationIsValid();
    }
}
在应用程序启动时调用

CreateMaps()

DTO:

namespace SO.Services.Data.ServiceModel.Types
{
    [DataContract]
    public class CustomerSearchResult
    {
        [DataMember]
        public int CustomerId { get; set; }
        [DataMember]
        public string AccountType { get; set; }
        [DataMember]
        public string ShortName { get; set; }
        [DataMember]
        public string LegacyName { get; set; }
        [DataMember]
        public string LegacyContactName { get; set; }
        [DataMember]
        public string City { get; set; }
        [DataMember]
        public string StateAbbreviation { get; set; }
        [DataMember]
        public string Country { get; set; }
        [DataMember]
        public string PostalCode { get; set; }
    }
}

型号:

namespace SO.Models
{
    public class CustomerSearchResult : BindableBase
    {
        public int CustomerId { get; set; }
        public string AccountType { get; set; }
        public string ShortName { get; set; }
        public string LegacyName { get; set; }
        public string LegacyContactName { get; set; }
        public string City { get; set; }
        public string StateAbbreviation { get; set; }
        public string Country { get; set; }
        public string PostalCode { get; set; }
    }
}

扩展方法:

public static class DtoMappingExtensions
{
    public static List<CustomerSearchResult> ToModels(this List<SO.Services.Data.ServiceModel.Types.CustomerSearchResult> customerSearchList)
    {
        return Mapper.Map<List<SO.Services.Data.ServiceModel.Types.CustomerSearchResult>, List<CustomerSearchResult>>(customerSearchList);
    }
}

我调用一个返回List<SO.Services.Data.ServiceModel.Types.CustomerSearchResult>的servicestack服务...当我对它使用ToModels扩展方法时,它会返回一个包含0条记录的List,即使源列表有25k左右的记录。

我很难过。

2 个答案:

答案 0 :(得分:5)

在CreateMaps()中,您将指定对象映射,而不是列表映射。

Mapper.CreateMap<SO.Services.Data.ServiceModel.Types.CustomerSearchResult, CustomerSearchResult>().ReverseMap();

然后在你的ToModels()中你做

Mapper.Map<List<CustomerSearchResult>, List<SO.Services.Data.ServiceModel.Types.CustomerSearchResult>>(customerSearchList);

答案 1 :(得分:1)

我认为问题出在这一行。

 Mapper.CreateMap<List<SO.Services.Data.ServiceModel.Types.CustomerSearchResult>, List<CustomerSearchResult>>();

此语句不需要,因为AutoMapper将在您映射类时自动处理列表的映射。

我认为你应该用之前的声明替换

Mapper.CreateMap<SO.Services.Data.ServiceModel.Types.CustomerSearchResult, CustomerSearchResult>();