public void SeVerificarSeAPropriedadeCodigoNuloEhObrigatoriaDeveTrazerFalso()
        {
            var propriedade = typeof(ObjetoDeTestes).GetProperty("CodigoNulo");

            DataAnnotationHelper.Obrigatorio(propriedade)
            .Should().BeFalse();
        }
        public static ItemDicionario CriarItemDicionario(int id, PropertyInfo propriedade, PropertyInfo propriedadeReferenciada = null)
        {
            if (propriedadeReferenciada == null)
            {
                propriedadeReferenciada = propriedade;
            }

            var coluna = DataAnnotationHelper.ConsultarColuna(propriedadeReferenciada);

            var alias = propriedade.Name;
            var nome  = ((coluna == null) || (string.IsNullOrEmpty(coluna.Nome))) ? propriedadeReferenciada.Name : coluna.Nome;

            if (string.Equals(nome, alias))
            {
                alias = null;
            }

            var nullable = TipoColunaNullable(propriedade);

            var campo = new ItemDicionario(
                id: id,
                alias: alias,
                nome: nome,
                tipoBanco: (coluna == null) ? DbType.Object : ConverterSqlDbTypeParaDbType(EnumHelper.FromString <SqlDbType>(coluna.NomeDoTipo ?? "Variant")),
                tipoLocal: (nullable) ? ConsultarTipoDaColunaNullable(propriedade) : propriedade.PropertyType,
                chave: DataAnnotationHelper.ChavePrimaria(propriedadeReferenciada),
                obrigatorio: DataAnnotationHelper.Obrigatorio(propriedadeReferenciada),
                tamanhoMinimo: DataAnnotationHelper.ConsultarTamanhoMinimo(propriedadeReferenciada),
                tamanhoMaximo: DataAnnotationHelper.ConsultarTamanhoMaximo(propriedadeReferenciada),
                ordem: (coluna == null) ? 0 : coluna.Ordem,
                opcaoGeracao: DataAnnotationHelper.ConsultarOpcaoGeracao(propriedadeReferenciada),
                valorPadrao: DataAnnotationHelper.ConsultarValorPadrao(propriedadeReferenciada),
                mapeado: DataAnnotationHelper.Mapeado(propriedade),
                propriedade: propriedade,
                validacoes: ConsultarValidacoes(propriedade, propriedadeReferenciada),
                ligacao: CriarLigacaoEntreModels(propriedade, propriedadeReferenciada)
                );

            if (nullable && campo.Obrigatorio)
            {
                throw new CampoNullableInvalidoException();
            }

            return(campo);
        }