Juntar Objetos com dados do Banco

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 classe 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 das colunas da tabela do banco, trocar no código 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 utíl ?, não desenvolvo profissionalmente, mas acredito que pode agilizar muito o processo de escrita de software.

Para alto desempenho voce pode usar o Dapper, é uma biblioteca leve que faz de forma mais eficiente o que voce quis fazer ai acima. Mas fique longe de Hibernate e Entity Framework, que são pesados, com muito excesso de engenharia.