private object ConsularValorPropriedadeAscendente(TObjeto registro, PropertyInfo propriedade, IList <object> dadosVinculados)
        {
            var item = _dicionario.ConsultarPorPropriedade(propriedade.Name);

            if ((item.Ligacao == null) || (item.Ligacao.Tipo != TiposRelacionamento.Ascendente))
            {
                return(null);
            }

            var valor = _dicionario.ConsultarValoresDaChave(registro, item.Ligacao.ChaveEstrangeira);

            if (dadosVinculados.Count > 0)
            {
                for (var n = 0; n < dadosVinculados.Count; n++)
                {
                    var ascendente = dadosVinculados[n];
                    var chave      = item.Ligacao.Dicionario.ConsultarValoresDaChave(ascendente);
                    if (valor.SequenceEqual(chave))
                    {
                        return(ascendente);
                    }
                }
            }

            return(null);
        }
        public void SeConsultarAChaveDeUmObjetoMapeadoDeveRetornarOValorEsperado()
        {
            var dicionarioSimples = new Dicionario(typeof(ObjetoMapeadoDeTestes));

            var objetoSimples = new ObjetoMapeadoDeTestes()
            {
                MapeadoComCodigo = 123,
                MapeadoComNome   = "Testes ABC"
            };

            dicionarioSimples.ConsultarValoresDaChave(objetoSimples)
            .Should().BeEquivalentTo(123);

            var dicionarioDupla = new Dicionario(typeof(ObjetoMapeadoComChaveDupla));

            var objetoDupla = new ObjetoMapeadoComChaveDupla()
            {
                MapeadoComChaveBase           = 345,
                MapeadoComChaveAutoIncremento = 789,
                MapeadoComNome = "Testes CDF"
            };

            dicionarioDupla.ConsultarValoresDaChave(objetoDupla)
            .Should().BeEquivalentTo(345, 789);
        }
        private void AtualizarRegistro(DataTable tabela, DataRow registro)
        {
            var chave             = _dicionario.ConsultarValoresDaChave(registro);
            var registroExistente = tabela.Rows.Find(chave);
            var tabelaImportada   = registro.Table;

            if ((registroExistente == null) || (tabelaImportada == null))
            {
                throw new DBConcurrencyException();
            }
            for (int indice = 0; indice < tabela.Columns.Count; indice++)
            {
                var campoImportado = tabelaImportada.Columns.IndexOf(tabela.Columns[indice].ColumnName);
                if (campoImportado > -1)
                {
                    registroExistente[indice] = registro[campoImportado];
                }
            }
        }
        public void SeConultarAChaveEstrangeiraDeUmObjetoMapeadoDeveRetornarOValorEsperado()
        {
            var dicionario = new Dicionario(typeof(FilhoMapeadoDoObjetoMapeadoDeTestes));

            var objeto = new FilhoMapeadoDoObjetoMapeadoDeTestes()
            {
                MapeadoComCodigoFilho = 123,
                MapeadoComNomeFilho   = "Testes ABC",
                MapeadoComCodigoPai   = 775
            };

            dicionario.ConsultarValoresDaChave(objeto, new[] { "CodigoPai" })
            .Should().BeEquivalentTo(775);
        }
        public void SeConsultarAChaveEstrangeiraDeUmObjetoComNomeDeCampoInvalidoNaoDeveGerarErro()
        {
            var dicionario = new Dicionario(typeof(FilhoMapeadoDoObjetoMapeadoDeTestes));

            var objeto = new FilhoMapeadoDoObjetoMapeadoDeTestes()
            {
                MapeadoComCodigoFilho = 123,
                MapeadoComNomeFilho   = "Testes ABC",
                MapeadoComCodigoPai   = 775
            };

            Action consulta = () => dicionario.ConsultarValoresDaChave(objeto, new[] { "NomeDeCampoInexistenteNaTabela" });

            consulta
            .ShouldNotThrow();
        }
 private void AdicionarRegistro(Dicionario dicionario, DataTable tabela, object registro)
 {
     tabela.Rows.Add(DataTableBuilder.ConverterItemEmDataRow(tabela, registro));
     if (dicionario.PossuiCamposFilho)
     {
         var chave = dicionario.ConsultarValoresDaChave(registro);
         foreach (var item in dicionario.ConsultarCamposFilho())
         {
             var valores = item.Propriedade.GetValue(registro, null);
             if (valores == null)
             {
                 continue;
             }
             AdicionarRegistros(item.Ligacao.Dicionario.Tipo, (IEnumerable)valores,
                                (r) => item.Ligacao.AplicarChaveAscendente(chave, r));
         }
     }
 }
Beispiel #7
0
        private void SincronizarChaveDoPaiComOsFilhos(TObjeto registro)
        {
            if (!((registro.EstadoEntidade == EstadosEntidade.Novo) || (_dicionario.AutoIncremento != OpcoesAutoIncremento.Nenhum) || (_dicionario.PossuiCamposFilho)))
            {
                return;
            }

            var chave = _dicionario.ConsultarValoresDaChave(registro);

            foreach (var filho in _dicionario.ConsultarCamposFilho())
            {
                var itens = (ICollection)filho.Propriedade.GetValue(registro, null);
                if (itens == null)
                {
                    continue;
                }
                foreach (var item in itens)
                {
                    filho.Ligacao.AplicarChaveAscendente(chave, item);
                }
            }
        }