none
Juntar Objetos com dados do Banco RRS feed

  • Pergunta

  • Bom.

    Sou novato em desenvolvimento.

    Uma coisa que me deixou Angustiado quando estava desenvolvendo meu software para o estágio da faculdade foi a manipulação de dados envolvendo a ligação de classes com os dados do banco de dados.

    Ex: faz um select, e depois tinha que ficar lendo datareader ou datatable para carregar objetos  texts, fazendo conversões.

    Foi então que procurei e encontrei  ORM, Entity Framework, NHibernate e Dapper.

    Só que lendo e estudando sobre vi que não é indicado para ferramentas que visão alto desempenho devido ao alto grau de abstração que é envolvido neles, além da curva de aprendizado.

    Por isso resolvei começar a criar uma biblioteca que poderia carregar os resultados de um select em objetos sem ter que programar muito (tempo).

    Então crie o DataLink (...) =/

    Basicamente ele funciona da seguinte forma, a pessoa faz um select, com query mesmo, este deve ser ligado a um datatable, que é repassado como parâmetro juntamente com o objeto para retorno e pronto dados “linkados”.

                if (!String.IsNullOrWhiteSpace(txtID.Text))

                {

                    DataTable dt = new DataTable();

                    MySqlCommand cmd = new MySqlCommand();

                    cmd = new MySqlCommand("select * from cidade where id = @id", conn);

                    cmd.Parameters.AddWithValue("@id", txtID.Text);

                    MySqlDataAdapter adpt = new MySqlDataAdapter(cmd);

                    adpt.Fill(dt);

     

                    Data d = new Data(); // classe do DataLink

                    Object [] cidade =  d.GetData(ref dt, new Cidade()); // retorno

                    if(cidade != null)

                    {

                        Cidade c = (Cidade)cidade[0]; //conversão

                        txtNome.Text = c.nome;

                        txtUf.Text = c.uf;

                    }

                  

                }

    No caso se fosse um select de clientes ? só criar um classe de cliente, sendo que os atributos tem que ter o mesmo nome da tabela do banco, troca Cidade por Cliente.

       class Cidade

        {

            public int id { get; set; }

            public string nome { get; set;}

            public string uf { get; set; }

        }

    Então … Será que um projeto desse é realmente útil ?, não desenvolvo profissionalmente, mas acredito que pode agilizar muito o processo de escrita de software.
    • Editado TomasAB segunda-feira, 20 de novembro de 2017 16:48
    segunda-feira, 20 de novembro de 2017 16:47

Respostas

Todas as Respostas

  • Olá,

    Acho o que quer fazer o dapper já faz de forma simples e rápida. Ele monta seu objeto a partir da query que envia para ele


    segunda-feira, 20 de novembro de 2017 21:59
    Moderador
  • TomasAB,

    Nosso colega welington jr foi feliz em sua resposta.

    Hoje tempos o EntityFrameworkCore, Dapper e NHibernate, que faz esse trabalho de mapeamento.

    O mais legal de usar o EntityFramework em Minha opinião é que podemos gerenciar o CLR ou seja, customizar as propriedades.

    Mais com certeza o Dapper atenderá sua necessidade.


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    Rafael Almeida
    Senior Developer .NET C#
    Development Leader at JAMSOFT Informática
    Criador e Mantenedor do Entity Framework Core for Firebird
    Contribuidor do Entity Framework Core
    Email: ralms@ralms.net
    Blog -  GitHub  -  LinkedIn -  Twitter


    segunda-feira, 20 de novembro de 2017 23:19
  • Olá tomas,

    Conseguiu resolver sua dúvida?

    att.

    quinta-feira, 7 de dezembro de 2017 11:34
    Moderador