コード例 #1
0
        private static Relacionamento CriarLigacaoEntreModels(PropertyInfo propriedade, PropertyInfo propriedadeReferenciada)
        {
            var tipoPropriedade = propriedade.PropertyType;

            if (!propriedade.GetGetMethod().IsVirtual)
            {
                return(null);
            }
            var chaveEstrangeira = DataAnnotationHelper.ConsultarForeignKey(propriedadeReferenciada);

            if (!string.IsNullOrEmpty(chaveEstrangeira))
            {
                return(CriarLigacaoAscendenteEntreModels(propriedadeReferenciada, chaveEstrangeira));
            }
            if (typeof(IEntidade).IsAssignableFrom(tipoPropriedade))
            {
                GerarErroDeLigacao(propriedade);
            }
            var inverse = DataAnnotationHelper.ConsultarForeignKeyDaInverseProperty(propriedadeReferenciada, tipoPropriedade);

            if (!string.IsNullOrEmpty(inverse))
            {
                return(GerarScriptCarregamentoDescendente(propriedadeReferenciada, inverse, tipoPropriedade));
            }
            if ((tipoPropriedade.IsGenericType) && (tipoPropriedade.GetGenericTypeDefinition() == typeof(ICollection <>)))
            {
                GerarErroDeLigacao(propriedade);
            }
            return(null);
        }
        public void SeConsultarAForeingKeyDaInversePropertyDeUmaPropriedadeMapeadaConfiguradaDeveRetornarONomeDaForeingKey()
        {
            var propriedade = typeof(ObjetoMapeadoDeTestes).GetProperty("MapeadoComFilhos");

            DataAnnotationHelper.ConsultarForeignKeyDaInverseProperty(propriedade, typeof(ICollection <FilhoMapeadoDoObjetoMapeadoDeTestes>))
            .Should().Be("IdPai");
        }
        public void SeConsultarAForeingKeyDaInversePropertyDaPropriedadPaiDeveRetornarNulo()
        {
            var propriedade = typeof(FilhoDoObjetoDeTestes).GetProperty("Pai");

            DataAnnotationHelper.ConsultarForeignKeyDaInverseProperty(propriedade, typeof(ICollection <FilhoDoObjetoDeTestes>))
            .Should().BeNull();
        }
        public void SeConsultarAForeingKeyDaInversePropertyDeUmaPropriedadeInvalidaDeveRetornarNulo()
        {
            var propriedadeNaoGenerica = typeof(ObjetoDeTestes).GetProperty("DataHora");

            DataAnnotationHelper.ConsultarForeignKeyDaInverseProperty(propriedadeNaoGenerica, typeof(DateTime))
            .Should().BeNull();

            var propriedadeGenericaNaoCollection = typeof(ObjetoDeTestes).GetProperty("CodigoNulo");

            DataAnnotationHelper.ConsultarForeignKeyDaInverseProperty(propriedadeGenericaNaoCollection, typeof(int?))
            .Should().BeNull();
        }