Entity Framework 4: Criando um CRUD com Code First
O artigo implementa a criação de um CRUD buscando demonstrar o uso do ASP.NET MVC Framework em conjunto com o EF4, abordando a técnica de criação code-first.
O artigo implementa a criação de um CRUD buscando demonstrar o uso do ASP.NET MVC Framework em conjunto com o EF4, abordando a técnica de criação code-first, onde pode-se escrever simples classes C# e o Entity Framework descobre como e onde armazenar instâncias dessas classes.
O ASP.NET MVC faz uso do MVC, um padrão arquitetural que faz a separação das tarefas das aplicações em três camadas: lógica da aplicação, apresentação e controle. O EF4 fornece fortes recursos de produtividade, incluindosuporte a Code-First, que traz a capacidade de trabalhar com umbanco de dados existenteou de criá-lo automaticamente. Este artigo demonstra através da implementação de um exemplo, como iniciar um projeto a partir do modelo conceitual, iniciando pelo código e criando uma estrutura CRUD (Create, Read, Update, Delete) utilizando o padrão MVC.
Autores: Everton Coimbra de Araújo e Angelice Paula Beal
Grande parte dos desenvolvedores utiliza a tecnologia orientada a objetos para o desenvolvimento de novas aplicações, mudando sua camada de apresentação, lógica e controle, mas mantendo a persistência dos dados utilizando bancos de dados relacionais e, isso se deve, principalmente, aos sistemas legados.
Devido à disparidade entre o modelo conceitual e o modelo lógico do banco de dados, denominada impedância, surgem algumas dificuldades na implementação de aplicações que sejam desenvolvidas utilizando linguagem orientada objeto e armazenamento em banco de dados relacional, já que com isso acaba-se gastando tempo demais com mudanças relativas aos bancos de dados, quando o foco deveria ser no desenvolvimento das aplicações.
O termo mapeamento objeto/relacional (ORM) refere-se à técnica de mapeamento de uma representação de dados a partir de um modelo de objeto para um modelo de dados relacional com um esquema baseado em SQL.
Dentre as ferramentas para ORM, tem-se oNHibernate e o Fluent NHibernate. O NHibernate é uma ferramenta de mapeamento objeto/relacional para ambientes .NET. Além de tratar do mapeamento entre as classes e as tabelas do banco de dados, ele facilita a recuperação de dados de consulta permitindo reduzir o tempo de desenvolvimento. O Fluent NHibernateoferece uma alternativa aopadrãoXML de mapeamento de arquivos do NHibernate.Ao invés de escreverdocumentosXML (arquivos .hbm.xml), o Fluent NHibernate permite escrever mapeamentos fortemente tipados em código C#, o que permite uma fácil refatoração, melhor legibilidade e código mais conciso.
Refactoring ou Refatoração trata-se de um processo que tem como principais objetivos tornar o código mais legível e com maior manutenibilidade. Menciona-se processo, pois refactoring não consiste em apenas mudar o código que já funciona, pois quando há qualquer tipo de alteração, há riscos de introdução de novos bugs. Refactoring é algo maior, que envolve pequenos passos, testes, disciplina e força de vontade. Serve para melhorar evolutivamente o código através de pequenas incursões, sejam em novas aplicações ou durante a manutenção corretiva e evolutiva das existentes.
O ADO.NET Entity Framework (EF4), é uma plataforma criada pela Microsoft e, propõe o mapeamento, entre o modelo de objetos e o esquema específico de armazenamento, amenizando a disparidade do paradigma objeto/relacional. Ele fornece uma série de benefícios para escrever aplicações persistentes, eliminando a maioria do código de acesso a dados que os desenvolvedores usualmente necessitam escrever.
O Entity Framework possui portabilidade para os mais variados bancos de dados, sendo um concorrente direto do NHibernate, tendo como diferencial as várias ferramentas visuais e recursos nativos para o Visual Studio, sendo a referência da Microsoft no contexto do mapeamento objeto/relacional.
Com o EF 4.0 houveram mudanças significativas, algumas melhorias foram feitas. Além da já existente abordagem chamada database-first, que consiste em desenvolver um modelo a partir de um banco de dados existente, também é possível trabalhar utilizando as seguintes abordagens:
- Model First: permite iniciar comum modelo vazio. Possibilita definiro modelo e, em seguida, gerar o banco de dados, mapeamentos e classes a partir do modelo definido.
- Code-only ou Code-First: permite utilizar o Entity Framework usando POCO (Plain Old CLR Objects).
POCO vem do termo POJO - Plain Old Java Object - utilizado pela comunidade Java. São classes que não implementam interfaces específicas de um framework, são independentes destas ferramentas, mas podem implementar métodos e comportamentos. O problema das classes possuírem dependências de algum framework específico é a dificuldade em testá-las e dar manutenção, torna-se muito complicado utilizar estas classes em outros projetos. Com a utilização de classes POCO esse tipo de problema não ocorre.
Uma questão importante é não confundir POCO com DTO – Data Transfer Object – o principal objetivo dos DTOs é transportar dados, eles são basicamente um container de dados. Um DTO é apenas uma coleção de propriedades. Não tem nenhuma validação, nenhuma lógica de negócios, nenhuma lógica de qualquer tipo. Veja os exemplos na Listagem 1.
Listagem 1. Exemplos de classes POCO e DTO
public Cidade cidade{ get; set; }
public class RelacaoPessoaDTO
Nesse artigo é utilizada a abordagem Code-First. Nessa abordagem não é preciso ter a preocupação em ter uma base de dados já criada, pois a aplicação começa pelo modelo, escrevendo as classes que definem os objetos apropriados para o trabalho. A responsabilidade de criar o banco de dados ficará por conta do EF4.
A possibilidade de criar classes de modelo sem ter que vinculá-las a um banco de dados específico, fornece uma maior flexibilidade para acessar os dados e permite centralizar esforços para as regras do negócio, sem a preocupação com a implementação da persistência dos dados.