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