Entity Framework не сохраняет измененных детей

Расстраивает это. Вот пара связанных объектов, сгенерированных Entity Framework, созданным на основе базы данных:

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

Вот код, который я вызываю, чтобы сохранить DevelopmentType - он включает в себя Autopper, поскольку мы отличаем объекты объектов от DTO:

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

В моем пользовательском интерфейсе наиболее распространенной операцией будет просмотр пользователем списка DevelopmentTypes и обновление их DefaultCharge. Поэтому, когда я проверяю это с помощью приведенного выше кода, он работает без ошибок, но на самом деле ничего не меняется.

Если я сделаю паузу в отладчике, станет ясно, что измененный DefaultCharge передается в функцию и что он присоединен к DevelopmentType для сохранения.

Если я изменю значение вручную в Visual Studio,делает сохранить обновленное значение. Что еще более запутанно.

Мониторинг базы данных с помощью SQL Server Profiler показывает, что выполняются команды обновлениятолько для родительского объекта ине для любых прикрепленных объектов.

У меня есть другой аналогичный код в другом месте, который функционирует как ожидалось. Что я здесь не так делаю?

РЕДАКТИРОВАТЬ:

Я обнаружил, что если вы делаете это до вызова SaveDevelopmentType:

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

Изменение типа сохраняет, а изменение ChargeableRate - нет. Я не думаю, что это помогает, в широком масштабе, но думал, что добавлю это.

Ответы на вопрос(7)

Ваш ответ на вопрос