none
Linq ou bindingsource? RRS feed

  • Pergunta

  • Olá,

    Tenho uma aplicação que antes eu fazia (a cagada) de filtrar os dados por LIKE, então toda vez que o usuário digitava uma letra em um TextBox eu ia até o banco e selecionava todos os dados que atender o meu LIKE, porem lendo um pouco e aprendendo, resolvi ir ao banco só uma vez, e carregar uma List<>, senda assim eu carrego meu DataGrid com essa List<>, e uso o Linq para filtrar essa List<>.

    Dai em uma discussão num outro forum me surgiu a dúvida, um rapaz falou sobre eu trazer os dados ao um bindingsource e filtrar os dados por ele.

    Dai me surgiu a dúvida de qual é o mais rápido? Qual é o mais certo conforme as boas maneiras de se programar?

    Eu nunca usei o bindingsource, pois sempre fiz sistemas com vb.net ou c#.net com banco de dados MySql, sendo que tudo eu faço via código.

    Alguém poderia me ajudar?

     

    Grato,

    Rafael Tomitão

    terça-feira, 21 de setembro de 2010 03:26

Respostas

  • O bindingSource é um facilitador para seus componentes dataware, ele ajuda você a não ter que ficar sempre digitando código como abaixo.

    pega os dados do banco

    txtNome.text = dataTable.Rows[0]["Nome"].ToString();

    e quando vai mandar para o banco

    dataTable.Rows[0]["Nome"] = txtNome.text;

    Com o bindingSource você não precisa fazer nada disto, apenas colocar no componente qual o campo ele vai fazer o bind.

    Este é  grande facilitador dele.

     

    Quanto ao 2 ponto se trazer os dados do banco e filtrar no cliente ou sempre filtrar no cliente, não existe fórmula correta.

    Ex.: Dados que nunca mudam voce deve trazer do banco apenas 1 vez e fazer cache destes dados.

    tabela de Sexo, Estados, Países e assim por diante

    Para Tabelas que mudam, você deve analisar a performance da aplicação frente a problemas que isto pode causar de sobrecarga na rede.

     

    Então neste caso cabe o bom senso.

     

    Obs.: o Linq e o dataSource são usado em conjunto para facilitar o trabalho como descrito acima

     

    no mais abc.

     

    se foi útil.

     

     

     


    Luciano Almeida MCAD / MCSD .NET
    • Sugerido como Resposta Luciano Almeida terça-feira, 21 de setembro de 2010 05:33
    • Marcado como Resposta Rafael Tomitão terça-feira, 21 de setembro de 2010 14:46
    terça-feira, 21 de setembro de 2010 05:31
  • Bom dia,

     

    a utilização do bindingsource independe da implementação de sua fonte de dados, ele pode ser usado em uma classe IList.

    Então ele pode ser usado por

    Classes suas

    Listas

    DataSet (tipados ou não)

    entre outros.

     

    sem mais,

     

    abc


    Luciano Almeida MCAD / MCSD .NET
    • Sugerido como Resposta Luciano Almeida terça-feira, 21 de setembro de 2010 11:51
    • Marcado como Resposta Rafael Tomitão terça-feira, 21 de setembro de 2010 14:46
    terça-feira, 21 de setembro de 2010 11:51

Todas as Respostas

  • O bindingSource é um facilitador para seus componentes dataware, ele ajuda você a não ter que ficar sempre digitando código como abaixo.

    pega os dados do banco

    txtNome.text = dataTable.Rows[0]["Nome"].ToString();

    e quando vai mandar para o banco

    dataTable.Rows[0]["Nome"] = txtNome.text;

    Com o bindingSource você não precisa fazer nada disto, apenas colocar no componente qual o campo ele vai fazer o bind.

    Este é  grande facilitador dele.

     

    Quanto ao 2 ponto se trazer os dados do banco e filtrar no cliente ou sempre filtrar no cliente, não existe fórmula correta.

    Ex.: Dados que nunca mudam voce deve trazer do banco apenas 1 vez e fazer cache destes dados.

    tabela de Sexo, Estados, Países e assim por diante

    Para Tabelas que mudam, você deve analisar a performance da aplicação frente a problemas que isto pode causar de sobrecarga na rede.

     

    Então neste caso cabe o bom senso.

     

    Obs.: o Linq e o dataSource são usado em conjunto para facilitar o trabalho como descrito acima

     

    no mais abc.

     

    se foi útil.

     

     

     


    Luciano Almeida MCAD / MCSD .NET
    • Sugerido como Resposta Luciano Almeida terça-feira, 21 de setembro de 2010 05:33
    • Marcado como Resposta Rafael Tomitão terça-feira, 21 de setembro de 2010 14:46
    terça-feira, 21 de setembro de 2010 05:31
  • O bindingSource é um facilitador para seus componentes dataware, ele ajuda você a não ter que ficar sempre digitando código como abaixo.

    pega os dados do banco

    txtNome.text = dataTable.Rows[0]["Nome"].ToString();

    e quando vai mandar para o banco

    dataTable.Rows[0]["Nome"] = txtNome.text;

    Com o bindingSource você não precisa fazer nada disto, apenas colocar no componente qual o campo ele vai fazer o bind.

    Este é  grande facilitador dele.

     

    Quanto ao 2 ponto se trazer os dados do banco e filtrar no cliente ou sempre filtrar no cliente, não existe fórmula correta.

    Ex.: Dados que nunca mudam voce deve trazer do banco apenas 1 vez e fazer cache destes dados.

    tabela de Sexo, Estados, Países e assim por diante

    Para Tabelas que mudam, você deve analisar a performance da aplicação frente a problemas que isto pode causar de sobrecarga na rede.

     

    Então neste caso cabe o bom senso.

     

    Obs.: o Linq e o dataSource são usado em conjunto para facilitar o trabalho como descrito acima

     

    no mais abc.

     

    se foi útil.

     

     

     


    Luciano Almeida MCAD / MCSD .NET

    Luciano, bom dia!

     

    Entendi então o por que usar o bindingsource, mas agora uma outra dúvida, para usar o bindingsource eu tenho que estar usando drive ODBC né? Ou é possivel eu preencher os dados usando um DataSet Tipado?

    No meu caso eu geralmente uso DataSet Tipado só para relatórios.

    Grato,

     

    Rafael Tomitão

    terça-feira, 21 de setembro de 2010 11:22
  • Bom dia,

     

    a utilização do bindingsource independe da implementação de sua fonte de dados, ele pode ser usado em uma classe IList.

    Então ele pode ser usado por

    Classes suas

    Listas

    DataSet (tipados ou não)

    entre outros.

     

    sem mais,

     

    abc


    Luciano Almeida MCAD / MCSD .NET
    • Sugerido como Resposta Luciano Almeida terça-feira, 21 de setembro de 2010 11:51
    • Marcado como Resposta Rafael Tomitão terça-feira, 21 de setembro de 2010 14:46
    terça-feira, 21 de setembro de 2010 11:51
  • Bom dia,

     

    a utilização do bindingsource independe da implementação de sua fonte de dados, ele pode ser usado em uma classe IList.

    Então ele pode ser usado por

    Classes suas

    Listas

    DataSet (tipados ou não)

    entre outros.

     

    sem mais,

     

    abc


    Luciano Almeida MCAD / MCSD .NET


    Ah entendi Luciano!!!

    Falou man

     

    Abraços

    terça-feira, 21 de setembro de 2010 14:46