Pergunta

Estou procurando práticas recomendadas aqui. Desculpe. Eu sei que é subjetivo, mas há muitas pessoas inteligentes aqui, então deve haver algumas maneiras "muito boas" de fazer isso.

Eu tenho um objeto personalizado chamado funcionário. Esse objeto possui sete propriedades como nome, telefone, e -mail e assim por diante. Há também uma tabela no meu banco de dados SQL chamado Tblemployees com sete colunas rotuladas de maneira semelhante. Meu objetivo é "converter" os resultados de uma consulta em uma lista genérica de objetos de funcionários. Qual é a melhor maneira de fazer isso (mais baixo, o mais rápido)?

O que estou fazendo atualmente é algo que eu vi proposto em toda a web. Não gosto porque sinto que diminui a velocidade da minha página. As listas genéricas me deixam mais rápido com o que faço, mas não me sinto bem em fazer meus clientes pagarem o preço.

Aqui está o que estou fazendo:

List<Employee> list = new List<Employee>();
DataSet ds = Employee.searchEmployees("Byron");
foreach (DataRow dr in ds.Tables[0].Rows)
{
   list.Add(new Employee(dr));
}

Eu tenho um construtor que leva um DataRarow (como mostrado) que lida com as coisas 'Property = dr ["coluna"].

Ansioso por seus pensamentos.

Foi útil?

Solução

Olhando brevemente para o código, e não vendo como ele é usado, eu retornaria um ienumerator em vez de uma lista. Em seguida, você pode usar a instrução RETURN DE REDUNDO e não estará percorrendo a lista duas vezes (uma para preencher e outra a ser exibida).

assim...

protected IEnumerable<Employee> GetEmployees ()
{
   List<Employee> list = new List<Employee>();
   DataSet ds = Employee.searchEmployees("Byron");

   foreach (DataRow dr in ds.Tables[0].Rows)
   {
       yield return new Employee(dr);
   }
}

Outras dicas

Qual parte do processo você acha que é lento? Sua metodologia não possui gargalos de desempenho flagrante, tanto quanto posso ver.

Eu sugeriria usar um mapeador como linq2sql ou estrutura de entidade

O motivo da construção de uma lista é passar entre as funções no lado do servidor.

Qual é a vantagem de passar a lista em vez de passar em uma referência de conjunto de dados ou mesmo um datatable?

Esses pensamentos à parte, o que você está fazendo atualmente é o procedimento padrão para a construção de uma lista. Como você acha que poderia acelerar? Por não instalar o objeto do funcionário? Você teria que fazer sem o objeto do funcionário que provavelmente mexeria com sua modelagem de entidades.

O que você está fazendo agora é algo que precisa ser feito de uma maneira ou de outra em algum momento, e você realmente não pode fazê -lo significativamente mais rápido do que a maneira como descreveu. Mas você pode reduzir o número de vezes que precisa fazer isso em cache em cache seus dados.

Armazene a lista de clientes no cache. Preencha -o no aplicativo Iniciar, por exemplo. Quando algo muda um registro do cliente, você atualiza o cache e salva o registro no banco de dados. Quaisquer leituras de qualquer usuário irão para o cache, não para o banco de dados.

Essa abordagem geralmente será uma ordem de magnitude mais rápida do que qualquer abordagem que atinja o banco de dados.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top