Вы не проверяете свой «Найти», если он успешен. Вероятно, это ноль. Шаблон, который вы используете для обновления Предмета, немного устарел, я приведу пример вашего самого внутреннего обновления.
if (updateEmailDetails != null)
{
tblPhone _Phone = _ADBEntities.tblPhones.Find(updateEmailDetails.Id);
if (_Phone != null)
_Phone.PhoneNo = PersonDetails.PhoneNo;
}
Вот и все SaveChanges, которые вы можете вызвать в конце, один раз для всех обновлений
_ADBEntities.SaveChanges();
То, что вы сделали с созданием новой записи, иногда делается для обновления записи, без предварительного извлечения ее из базы данных. Но вы делаете выборку (с помощью Find). В этом случае вы можете go простой путь по умолчанию.