public IEnumerable <TObjeto> Varios(IConfiguracao <TObjeto> configuracao) { var loader = new BuscadorLoader <TObjeto>(_comando, _dicionario, _relacionamentoBuilder); var dadosVinculados = loader.CarregarPropriedadesVinculadas(configuracao); return(ConverterRegistrosEmLista(configuracao, loader, dadosVinculados, _comando.ConsultarRegistro(configuracao))); }
public IEnumerable <TObjeto> Varios <TObjeto>(IConfiguracao configuracao) { var reader = _comando.ConsultarRegistro(configuracao); try { var conversor = Conversor.ConverterDataReaderParaObjeto <TObjeto>(reader); foreach (var registro in conversor) { yield return(registro); } } finally { reader.Close(); } }
private IList <object> CarregarRelacionamentoVinculado(TiposRelacionamento tipo, Configurador <TObjeto> configurador, PropertyInfo propriedade) { var item = _dicionario.ConsultarPorPropriedade(propriedade.Name); configurador.Preparar(); var scriptPadrao = configurador.ConsultarScript(); if (item.Ligacao == null) { throw new NaoFoiPossivelEncontrarALigacaoEntreOsCamposException(); } var scriptPersonalizado = (tipo == TiposRelacionamento.Ascendente) ? _relacionamentoBuilder.CriarScriptConsultaRelacionamentoAscendente(item.Ligacao, scriptPadrao) : _relacionamentoBuilder.CriarScriptConsultaRelacionamentoDescendente(item.Ligacao, scriptPadrao, _dicionario.ConsultarCamposChave()); configurador.PersonalizarScript(scriptPersonalizado); IDataReader reader; try { reader = _comando.ConsultarRegistro(configurador); } catch (Exception ex) { throw new NaoFoiPossivelConsultarRelacionamentoVinculadoDevidoAoSeguinteErroException(_dicionario.AliasOuNome, tipo.ToString(), item.Ligacao.Dicionario.AliasOuNome, ex.Message); } var tipoModel = (tipo == TiposRelacionamento.Ascendente) ? propriedade.PropertyType : propriedade.PropertyType.GetGenericArguments()[0]; try { return(Conversor.ConverterDataReaderParaObjeto(tipoModel, reader).Cast <object>().ToList()); } finally { reader.Close(); } }