Automapper не отображает все поля, которые настроены - PullRequest
0 голосов
/ 03 сентября 2018

У меня есть объекты базы данных, которые я хотел бы сопоставить с моим объектом просмотра в моем приложении, но не каждое свойство сопоставляется.

вот мои Automapper настройки:

Вот мой класс View, который я бы хотел AutoMapper сопоставить с

public class CustomerDetails
{
    public int Id { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public DateTime Dob { get; set; }
    public DateTime CreateDate { get; set; }

    public decimal Balance { get; set; }

    public List<Email> Emails { get; set; }
    public List<Address> Addresses { get; set; }


public class Email
{
        public Guid Id { get; set; }
        public string EmailName { get; set; }
}

  public class Address
    {
        public Guid Id { get; set; }
        public string Address1 { get; set; }
        public string Address2 { get; set; }
        public string City { get; set; }
        public string State { get; set; }
        public string Zip { get; set; }
        public string Country { get; set; }
    }

}

Вот дБ классы:

    public class Customer
        {
            public int Id { get; set; }
            public string FirstName { get; set; }
            public string LastName { get; set; }

            public virtual CustomerBalance Balance { get; set; }
            public virtual ICollection<Email> Emails { get; set; }
            public virtual ICollection<Address> Address { get; set; }

    public class Email
    {
        public Guid Id { get; set; }
        public string EmailName { get; set; }
        public bool IsPrimary { get; set; }
        public virtual Customer Customer { get; set; }

    }

 public class Address
    {
        public Guid Id { get; set; }
        public string Address1 { get; set; }
        public string Address2 { get; set; }
        public string City { get; set; }
        public string State { get; set; }
        public string Zip { get; set; }
        public string Country { get; set; }
    }
    }

вот как я настраиваю свою конфигурацию для AutoMapper

  Mapper.Initialize(config =>
            {
                config.AddProfile<CustomerProfile>();
            }); 


  public class CustomerProfile : Profile
    {

        public CustomerProfile()
        {
            CreateMap<DataModels.Phone, Phone>();
            CreateMap<DataModels.Email, Email>();
            CreateMap<DataModels.Address, Address>();
            CreateMap<DataModels.CustomerPin, Pin>()
                .ForMember(x => x.PinNumber, y => y.MapFrom(s => s.Pin))
                .ForMember(x => x.Id, y => y.MapFrom(s => s.Id))
                ;

            CreateMap<Customer, CustomerDetails>()
                .ForMember(x => x.Phones, y => y.MapFrom(s => s.Phones))
                .ForMember(x => x.Emails, y => y.MapFrom(s => s.Emails))
                .ForMember(x => x.Balance, y => y.MapFrom(s => s.Balance.Balance))
                .ForMember(x => x.Pins, y => y.MapFrom(s => s.Pin))
                .ForMember(x => x.Addresses, y => y.MapFrom(s => s.Address))

                ;

            CreateMap<Customer, CustomerDetails>().ReverseMap();
        }
    }

Странно то, что все отображается так, как ожидалось, кроме свойства Addresses и Balance на моем CustomerDetails.cs. Коллекция списка является нулевой, даже если я указал, чтобы сопоставить ее с участником. Тем не менее, список адресов электронной почты отображается соответствующим образом.

Я что-то упустил?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...