public void Update_Work(Work work) { int oldTypeID = 0, newTypeID = 0; var workDB = Works.FirstOrDefault(x => x.ID == work.ID); if (workDB != null) { oldTypeID = workDB.WorkTypeID; newTypeID = work.WorkTypeID; } ChangeTracker.DetectChanges(); Works.AddOrUpdate(work); // todo была ошибка, проверить в истории if (oldTypeID != newTypeID) //При изменении типа! Удалить-перенести атрибуты типа { Update_AttrValuesFields_ForWork(work, (WorkTypeEnum)oldTypeID, (WorkTypeEnum)newTypeID); } SaveChanges(); }