private bool IsEntityCorrupted(IQueryable entityDbSet, Type entityType)
        {
            var crcs = new List <byte[]>();

            foreach (IDigitoVerificadorHorizontal entity in entityDbSet.AsNoTracking())
            {
                //Aborto si ya encontre un registro corrupto
                if (!_calculadoraDv.EsValido(entity))
                {
                    return(true);
                }

                crcs.Add(entity.DVH);
            }
            //Si nunca grabe entidades de este tipo, ni tampoco tengo un DVV, puede darse este caso y no debe fallar
            var digitoVerificadorVerticalGuardado = _context.Set <DigitoVerificadorVertical>().Find(entityType.FullName);

            if (digitoVerificadorVerticalGuardado == null && crcs.Count == 0)
            {
                return(false);
            }
            //Calculo el hash vertical con todos los CRC individuales y lo comparo con lo que tengo almacenado
            var verticalChecksum = _calculadoraDv.CalcularDigitoVerificadorDesdeMultiplesDigitos(crcs);

            return(!verticalChecksum.SequenceEqual(digitoVerificadorVerticalGuardado.Checksum));
        }
Exemple #2
0
        private byte[] CalculateChecksumForEntityType(DbContext context, Type entityType)
        {
            var crcs = new List <byte[]>();

            foreach (IDigitoVerificadorHorizontal entity in context.Set(entityType))
            {
                crcs.Add(entity.DVH);
            }

            var verticalChecksum = _calculadoraDigitosVerificadores.CalcularDigitoVerificadorDesdeMultiplesDigitos(crcs);

            return(verticalChecksum);
        }