Ir para o conteúdo PET Sistemas de Informação Ir para o menu PET Sistemas de Informação Ir para a busca no site PET Sistemas de Informação Ir para o rodapé PET Sistemas de Informação
  • International
  • Acessibilidade
  • Sítios da UFSM
  • Área restrita

Aviso de Conectividade Saber Mais

Início do conteúdo

Entity Framework



Olá Pessoal, nessa edição do PET Redação iremos aprender um pouco sobre uma das principais ferramentas de mapeamento objeto-relacional para C#, o Entity Framework. Mas enfim, o que é Mapeamento objeto-relacional e o que é Entity Framework? Continue lendo para conhecer mais sobre este assunto.

 
O que é mapeamento objeto-relacional?

ORM (object-relational mapping) é uma técnica que visa aproximar a ideia do desenvolvimento orientado a objetos, normalmente utilizada em aplicações, ao modelo relacional do banco de dados, mapeando os dados a partir de classes e vice-versa. Dessa forma, pode-se economizar tempo desenvolvendo sua base de dados na mesma linguagem usada na aplicação, sem necessidade de escrever instruções SQL.

Existem ORMs para as mais diversas linguagens de programação, porém hoje vamos conhecer um em específico, o Entity Framework.

 
O que é Entity Framework?

Entity Framework é um exemplo de ORM. Desenvolvido para aplicações C#, ele possui três estratégias para relacionar-se com o banco de dados: Database First, Model First e Code First.

  1. Database First: Tem a função de auxiliar projetos que já possuem um banco de dados estabelecido, realizando uma engenharia-reversa, criando um modelo de dados, chamado EDM (Entity Data Model), que é uma representação visual da base de dados, baseado em XML. Por fim, resultando nas classes necessárias, de acordo com as tabelas no banco de dados.

  2. Model First: Muito semelhante ao Database First, pois também é focado no desenvolvimento gráfico com EDM, mas, diferentemente, o Model First é utilizado quando a base de dados ainda não está criada. Dessa forma, todas as tabelas e relacionamentos são feitos visualmente.

  3. Code First: É o mais distante dos últimos vistos, pois o foco é totalmente no desenvolvimento. Ao contrário do Database First, primeiramente, cria-se as classes, então o EntityFramework cria sua base de dados e suas tabelas, baseado nas classes desenvolvidas.

 
Implementação

Passada a ideia geral de cada estratégia, agora iremos focar e implementar uma delas: o Code First. Para isso, será necessário a instalação do Visual Studio Community (não é o Code) e, para controlar o nosso banco de dados, o SQL Server Express (somente para ter as instâncias) e o SQL Server Management Studio (para visualizar e conectar com o servidor), conhecido como SSMS. Não se assuste, o SQL Server Express é só baixar, para conseguirmos conectar ao servidor pelo SSMS, que abriremos somente para conectar e para visualizar o resultado final.

Realizadas as instalações, o primeiro passo é conectar-se com o servidor local da sua máquina, a partir do SQL Server. Para descobrir o nome da sua máquina é necessário entrar nas propriedades do seu computador, clicando com o botão do mouse em Este Computador. Segue a imagem abaixo:

 
 
 
 

Ao clicar em propriedades aparecerá uma tela, no qual terá uma campo chamado Nome do Computador e é só copiá-lo. Feito isso, podemos abrir o SQL Server Management Studio e irá aparecer uma janela (imagem abaixo). No campo Nome do Servidor, cole o Nome do Computador, que foi copiado anteriormente, seguido por \SQLEXPRESS.

 
 
 
 

Realizada a conexão com o servidor local, agora podemos começar o desenvolvimento. Abrindo o Visual Studio aparecerá uma tela, clique em Criar um Projeto. Passado isso, iremos escolher o tipo e o nome do projeto. O tipo do projeto, neste caso, vai ser Aplicativo de Console (.NET Framework), como está representado na imagem abaixo. Clicando em próximo, preencha o nome como MeuProjetoPET (mas pode ser qualquer um).

Criado nosso projeto, agora podemos abrir a classe padrão Program.cs no Gerenciador de Soluções. Caso ela não esteja visível, segue o caminho:

Exibir → Gerenciador de Soluções

Dentro da classe Program.cs, criaremos uma outra classe, que futuramente será uma tabela do nosso banco de dados, chamada Pessoa. Essa classe terá como atributos: um id (identificador inteiro), um nome (string) e um telefone (string). Ficando assim:

 
 
 
 

Antes de continuar programando devemos instalar o Entity Framework, para usar todos recursos da ferramenta. Para isso, utiliza-se o Console do Gerenciador de Pacotes (NuGet). Ele pode ser acessado pela seguinte sequência:

Ferramentas → Gerenciador de Pacotes do Nuget → Console do Gerenciador de Pacotes

Seguindo a sequência, abrirá um console (parecido com o cmd) na parte inferior do Visual Studio. Então, escreva o seguinte comando:

 
 

Instalado o Entity, criaremos a conexão da nossa aplicação com o servidor local, a partir de uma connectionString. Essa conexão deve ser criada no arquivo App.config (dentro da <configuration>), também localizado no Gerenciador de Soluções. Na imagem abaixo, como parâmetro temos: o name (pode ser qualquer nome, porém usaremos ele mais tarde), a connectionString e o providerName (padrão). Na connectionString, o Data Source deve ser igual ao usado no SQL Server anteriormente, o Initial Catalog será o nome do seu banco quando executarmos o programa (pode ser qualquer nome) e o Integrated Security é padrão.

 
 

Continuando a programação no Program.cs, incluiremos a seguinte linha de código, para acessar os recurso do Entity:

 
 
 
 

Com o Entity disponível, ainda dentro do arquivo Program.cs, agora podemos criar nossa próxima classe, chamada Contexto. O Contexto é responsável por manter e gerenciar as classes que fazem parte da camada de dados. Utilizando a função DbSet<>, definimos que a classe Pessoa pertence ao contexto de dados.

 
Lembra que iríamos utilizar o name da connectionString?

Vamos utilizar agora. Dentro da função base() informaremos qual a connectionString que queremos usar, então lembre-se de colocar de acordo com o escrito na sua connectionString.

 
 
 
 

Para finalizar o desenvolvimento, ainda não mexemos na função Main do Program.cs. Não se assuste com o tamanho dela, comparado com as outras, não é difícil de entender. Basicamente, ela chama o nosso Contexto, utilizando a variável banco, para acessar a nossa classe/entidade. Após isso, há uma entrada de dados com o nome e telefone da pessoa. Depois receber os dados da pessoa, iremos inseri-los na tabela Pessoas, a partir da função Add() e salvar as alterações com a função SaveChanges(). Somente essa parte de código já realizaria o Code First, criando a base de dados e a tabela , o resto do código é uma demonstração de consulta para listar as pessoas cadastradas no banco (no nosso caso vai ser só uma). A variável query utiliza um componente de consulta, semelhante com uma instrução SQL, chamado Linq. Por padrão, o Linq já é incluído em todos os códigos C#.

 
 
 
 

Para executar é só clicar em iniciar, na parte superior do Visual Studio. Feito isso, abrirá um console que vai pedir os dados de uma pessoa qualquer. Após o preenchimento, ele começará a criação do banco de dados e da tabela Pessoas (esse processo normalmente é demorado). Para verificar se está correto, ele tenta buscar os dados no banco e retornar o nome e o telefone das pessoas cadastradas na tabela Pessoas.

 
 
 
 

No SQL Server Management Studio, podemos visualizar o banco criado, juntamente com a tabela Pessoas.

 
 
 

Para ter acesso ao Program.cs e o App.config, desenvolvidos ao longo da redação, é só acessar este repositório.

Caso queria aprender mais e implementar um Database First ou Model First em uma aplicação C#, segue este link.

Para quem programa em outra linguagem, este link possui mais conteúdo sobre ORMs e os principais para cada linguagem no mercado.

Com isso, compreendemos um pouco mais sobre ORMs e Entity Framework, implementando um Code First simples, podendo ser alimentado com outras classes e métodos, auxiliando e facilitando o desenvolvimento de projetos.

 
 
Referências
Divulgue este conteúdo:
https://ufsm.br/r-791-2701

Publicações Relacionadas

Publicações Recentes