Chris Klepeis
Chris Klepeis

Reputation: 9973

AutoMapper Not Mapping... No Errors Thrown

Here's that I have in my WPF application:

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() is called once on application start.

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

Model:

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

Extension method:

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

I call a servicestack service which returns a List<SO.Services.Data.ServiceModel.Types.CustomerSearchResult> ... when I use the ToModels extension method against it, it returns a List with 0 records, even though the source list had 25k or so records.

I'm stumped.

Upvotes: 4

Views: 6924

Answers (2)

tc44
tc44

Reputation: 184

In your CreateMaps() you would specify the object mappings, not the list mapping.

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

And then in your ToModels() you do

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

Upvotes: 6

Hakan Fıstık
Hakan Fıstık

Reputation: 19411

I think the problem is here in this line.

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

this statement has no need because the AutoMapper will handle the Mapping of the list automatically when you Map the Classes.

I think you should replace the previous statement with this one

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

Upvotes: 1

Related Questions