/// <summary> /// Actualiza la descripcion(miga de pan) de todas los unidades a partir de una clave (haciendo uso de un replace del viejo valor con el nuevo) /// </summary> /// <param name="clave">Clave de la unidad(rama)</param> /// <param name="newValue">Nuevo valor a actualizar</param> /// <param name="oldValue">Valor a reemplazar</param> public void ActualizaMigasDePanRamas(string clave, string newValue, string oldValue) { try { var nodo = _db.UnidadOrganizacionalEmpresas.Where(x => x.ClaveUnidad == clave).FirstOrDefault(); if (nodo.Descripcion != null) { nodo.Descripcion = nodo.Descripcion.Replace(oldValue, newValue); _db.SaveChanges(); var rama = _db.UnidadOrganizacionalEmpresas.Where(x => x.padre == clave).AsNoTracking().ToList(); if (rama.Count > 0) //Verificamos si el nodo tiene hijos { foreach (var hoja in rama) { ActualizaMigasDePanRamas(hoja.ClaveUnidad.Trim(), newValue, oldValue); } } } } catch (Exception e) { throw new Exception(e.Message, e); } }