public when_using_ef() { var mapperContainer = new MapperContainer() .Register<Person, PersonEntity>( (f, t, c) => { c.Map(f.Name, () => t.Name); c.MapAll(f.Addresses, () => t.Addresses); }) .Register<Name, NameEntity>( (f, t, c) => { t.First = f.First; t.Last = f.Last; } ) .Register<Address, AddressEntity>( (f, t, c) => { t.Name = f.Name; } ); Database.SetInitializer(new DropCreateDatabaseIfModelChanges<DataContext>()); _dataContext = new DataContext(mapperContainer); _from = new Person { Name = new Name {First = "Person"}, Addresses = new[] { new Address {Name = "Keep"}, new Address {Name = "New"} } }; _to = _dataContext.Create<PersonEntity>(); _to.Name = new NameEntity {First = "Overwite"}; _to.Addresses = new[] { new AddressEntity {Name = "Keep"}, new AddressEntity {Name = "Delete"} }; _dataContext.SaveChanges(); var personId = _to.Id; _dataContext.Map(_from, () => _to); _dataContext.SaveChanges(); _dataContext = new DataContext(mapperContainer); _to = _dataContext .People.Include(p => p.Addresses) .Single(p => p.Id == personId); }