Entity Framework não salvando crianças modificadas

Frustrante isso. Aqui está um par de objetos relacionados, conforme gerado pelo primeiro Entity Framework do banco de dados:

public partial class DevelopmentType
{
    public DevelopmentType()
    {
        this.DefaultCharges = new HashSet<DefaultCharge>();
    }

    public System.Guid RowId { get; set; }
    public string Type { get; set; }

    public virtual ICollection<DefaultCharge> DefaultCharges { get; set; }
}

public partial class DefaultCharge
{
    public System.Guid RowId { get; set; }
    public decimal ChargeableRate { get; set; }
    public Nullable<System.Guid> DevelopmentType_RowId { get; set; }

    public virtual DevelopmentType DevelopmentType { get; set; }
}

Aqui está o código que estou chamando para salvar um DevelopmentType - envolve o automapper, já que diferenciamos objetos de entidade de DTOs:

    public void SaveDevelopmentType(DevelopmentType_dto dt)
    {
        Entities.DevelopmentType mappedDevType = Mapper.Map<DevelopmentType_dto, Entities.DevelopmentType>(dt);
        _Context.Entry(mappedDevType).State = System.Data.EntityState.Modified;

        _Context.DevelopmentTypes.Attach(mappedDevType);
        _Context.SaveChanges();
    }

Na minha interface de usuário, a operação mais comum será para um usuário examinar uma lista de Tipos de Desenvolvimento e atualizar seu DefaultCharge. Então, quando eu testo isso usando o código acima, ele é executado sem erro, mas nada realmente muda.

Se eu fizer uma pausa no depurador, fica claro que o DefaultCharge alterado está sendo passado para a função e que está anexado ao DevelopmentType a ser salvo.

Passando por isso, se eu alterar o valor manualmente dentro do visual studio,faz salve o valor atualizado. O que é ainda mais confuso.

Monitorar o banco de dados com o SQL Server Profiler revela que os comandos de atualização são emitidossó para o objeto pai enão para quaisquer objetos anexados.

Eu tenho outro código semelhante em outro lugar que funciona como esperado. O que eu estou fazendo errado aqui?

EDITAR:

Eu descobri que, se você fizer isso antes da chamada para SaveDevelopmentType:

        using (TransactionScope scope = new TransactionScope())
        {
            dt.Type = "Test1";
            dt.DefaultCharges.First().ChargeableRate = 99;
            _CILRepository.SaveDevelopmentType(dt);
            scope.Complete();
        }

A alteração para Type salva, mas a alteração para ChargeableRate não. Eu não acho que isso ajuda, massivamente, mas pensei em adicionar isso.

questionAnswers(7)

yourAnswerToTheQuestion