Why does AutoMapper not map my child object?
<p>I have two entities(tables) Person and Address. Address is a child entity of Person.</p>

<pre><code>public class Person
{
    public Person()
    {
        Addresses = new ObservableCollection&lt;Address&gt;();
    }

    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    [DisplayName("Primary Key")]
    [ScaffoldColumn(false)]
    public int Id { get; set; }

    [Required]
    [DisplayName("First Name")]
    [StringLength(25, MinimumLength = 3)]
    public string FirstName { get; set; }

    [DisplayName("Middle Name")]
    [MaxLength(25)]
    public string MiddleName { get; set; }

    [Required]
    [DisplayName("Last Name")]
    [StringLength(25, MinimumLength = 3)]
    public string LastName { get; set; }

    public string FullName =&gt; $"{FirstName} {LastName}";

    [Required]
    [DisplayName("Date of Birth")]
    [DataType(DataType.Date)]
    public DateTime BirthDate { get; set; }

    public ObservableCollection&lt;Address&gt; Addresses { get; set; }
}


public class Address
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    [DisplayName("Primary Key")]
    [ScaffoldColumn(false)]
    public int Id { get; set; }
    public int OwnerId { get; set; }
    public Person Owner { get; set; }
    public string Line1 { get; set; }
    public string Line2 { get; set; }
    public string City { get; set; }
    public string State { get; set; }
    public string ZipCode { get; set; }
}
</code></pre>

<p>Both tables have a (almost) mirror image archive table named PersonArchive and AddressArchive respectively.</p>

<pre><code>public class PersonArchive
{
    public PersonArchive()
    {
        Addresses = new ObservableCollection&lt;AddressArchive&gt;();
    }

    [Key]
    [DisplayName("Primary Key")]
    [ScaffoldColumn(false)]
    public int Id { get; set; }

    [Required]
    [DisplayName("First Name")]
    [StringLength(25, MinimumLength = 3)]
    public string FirstName { get; set; }

    [DisplayName("Middle Name")]
    [MaxLength(25)]
    public string MiddleName { get; set; }

    [Required]
    [DisplayName("Last Name")]
    [StringLength(25, MinimumLength = 3)]
    public string LastName { get; set; }

    public string FullName =&gt; $"{FirstName} {LastName}";

    [Required]
    [DisplayName("Date of Birth")]
    [DataType(DataType.Date)]
    public DateTime BirthDate { get; set; }

    public ObservableCollection&lt;AddressArchive&gt; Addresses { get; set; }
}

public class AddressArchive
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    [DisplayName("Primary Key")]
    [ScaffoldColumn(false)]
    public int Id { get; set; }
    public int OwnerId { get; set; }
    public PersonArchive Owner { get; set; }
    public string Line1 { get; set; }
    public string Line2 { get; set; }
    public string City { get; set; }
    public string State { get; set; }
    public string ZipCode { get; set; }
}
</code></pre>

<p>In the Person table each field matches the type, except one, the Addresses field is of a collection of Address and the corresponding field in PeopleArchive is of type AddressArchive. Same for Address's field Owner.</p>

<pre><code>        using (ArchiveDemoContext context = new ArchiveDemoContext())
        {

            //Person p = context.People.Include("Addresses").FirstOrDefault();
            Person p = context.People.FirstOrDefault();

            MapperConfiguration config = new MapperConfiguration(cfg =&gt;
            {
                cfg.CreateMap&lt;Person, PersonArchive&gt;()
                    .ForMember(dest =&gt; dest.Addresses, opt =&gt; opt.MapFrom(src =&gt; src.Addresses));
                cfg.CreateMap&lt;Address, AddressArchive&gt;()
                    .ForMember(dest =&gt; dest.Owner, opt =&gt; opt.MapFrom(src =&gt; src.Owner));
            });

            config.AssertConfigurationIsValid();

            IMapper mapper = config.CreateMapper();

            PersonArchive person = mapper.Map&lt;Person, PersonArchive&gt;(p);
            //context.People.Remove(p);

            context.PeopleArchive.Add(person);

            context.SaveChanges();
        }
</code></pre>

<p>Debugging the code does not give me any Exceptions, however, only the Person is archived and not the Address.</p>

<p>Thanks in Advance,</p>