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(); }