public EstadoBaseDeDatos ValidarBasedeDatos() { BLL.Sistema bllSistema = new BLL.Sistema(); EstadoBaseDeDatos resultado = new EstadoBaseDeDatos(); try { string todosLosDvh = null; resultado.EsValida = true; //CALCULO DE TODOS LOS DVH //Obtengo todos los nombres de las tablas de la base de datos List <string> nombresDeTablas = ObtenerNombresDeTablas(); foreach (string nombreTabla in nombresDeTablas) { //Obtengo el contenido de la tabla actual DataTable tabla = bllSistema.LeerTablaPorNombre(nombreTabla); string dvvCalculado = ""; bool tablaValida = true; for (int row = 0; row <= tabla.Rows.Count - 1; row++) { //Calculo el DVH string dvhCalculado = DigitoVerificador.CalcularDvhDeFila(tabla, row); todosLosDvh = todosLosDvh + dvhCalculado; if (!tabla.Rows[row]["DVH"].ToString().Equals(dvhCalculado)) { //Si el DVH guardado en la base es distinto al DVH recien calculado //indica que hubo una modificacion del registro, sin actualizar el DVH resultado.RegistrosCorruptos.Add("Error de integridad en la tabla -" + nombreTabla + "- en el registro " + tabla.Rows[row][0].ToString()); resultado.EsValida = false; tablaValida = false; } dvvCalculado += tabla.Rows[row]["DVH"].ToString(); } if (tablaValida) { BE.DVV aDvv = _dalManagerDvv.ObtenerDVVPorNombreDeTabla(nombreTabla); dvvCalculado = DigitoVerificador.CrearHash(dvvCalculado); resultado.EsValida = dvvCalculado.Equals(aDvv.Valor); if (!resultado.EsValida) { resultado.RegistrosCorruptos.Add( "Error de integridad en la tabla -" + nombreTabla + "-. DVV vertical corrupto"); } } } } catch (Exception ex) { Logger.Log.Error("Error al validar la integridad de la base.", ex); resultado.RegistrosCorruptos.Add("No se pudo validar la integridad de la base."); resultado.EsValida = false; return(resultado); } return(resultado); }