Manipulação de Dados com Repositórios em ADO.NET SqlClient

Hoje venho apresentar uma forma simples e produtiva para persistência e manipulação de dados.

Para isso vou utilizar a seguinte arquitetura:

Camada de Apresentação : Telas Windows Form

Camada de Entidades: Classes referente aos objetos de negócio do projeto

Camada de Repositório: Classes relacionadas aos objetos de negócios, com a responsabilidade de persistência e manipulação de dados.

Para o acesso aos dados, implementarei os repositórios utilizando o ADO.NET SqlClient. O que por um lado vai gerar um pouco mais de serviço, precisando implementar todos os comandos SQL para manipulação dos dados. Por outro lado, será um ponto positivo. Pois vamos ter a autonomia nessas manipulações, por não estar dependendo de Frameworks ORMs e tendo todas as possibilidades de comandos que o SQL pode nos proporcionar.

O código do projeto foi compartilhado no Github: https://github.com/maxcnunes/WindowsForm-Entidades-RepositorioAdoNet

Projeto Entidades

Aqui implementamos dentro do projeto de Entidades, nossa classe referente ao objeto Aluno. Tente sempre manter, para as classes de entidade, a real características e comportamentos referente ao  objeto que a classe representa. Não deixe métodos CRUD aqui, porque no mundo real um aluno não possui tais comportamentos.

Projeto Repositório

A classe a seguir será herdada por todos os repositórios concretos. Nela manteremos métodos e atributos comum aos outros repositórios.  Neste caso, foi implementado o método criar conexão, que recupera a string de conexão que está no arquivo app.config, que está localizado no projeto principal da Solution (Camada Apresentação).

Interface que define os comportamentos comuns ao todos os repositórios. Dessa forma garantimos que todos os repositórios deverão seguir esta implementação. O mais legal nesse ponto, é que foi utilizado generics. Deixando esta interface bem genérica e possibilitando que qualquer classe consiga implementá-la.

Repositório Aluno implementa a interface IRepositorio e herda as definições da classe RepositorioBase.  Aqui sim realizamos o acesso aos dados, através do SqlClient do ADO.NET.

Note que no código anterior utilizamos 3 tipos de "Execute Command", para executar os comandos SQL.

Projeto MDI_Escola (Apresentação)

A tela para gerenciamento do Aluno ficará assim:

Eventos da tela Cadastrar Aluno (CodeBehind da Tela):

Por último adicione um arquivo "App.config" ao projeto da camada de Apresentação e configure nele a conexão com o seu banco: