O objetivo deste post é apresentar o funcionamento do Entity Framework Code-First CTP 5. Este conjunto de bibliotecas ainda não está disponível na instalação do Visual Studio 2010, nem na instalação do Microsoft .Net Framework 4, pois ainda está em fase de testes e melhorias, por isso que ainda é um CTP (Community Technology Previews). O EF Code-First, apesar de ser um CTP, já está na versão 5, e apresenta muitas facilidades que auxiliam os desenvolvedores de software.
Nas próximas linhas apresentarei um exemplo de como trabalhar com o EF Code-First. Neste exemplo utilizo o conceito POCO (Plain Old CLR Objects), já discutido em um post anterior. Faremos a persistência dos dados de algumas entidades no banco de dados, e o EF Code-First ficará encarregado de fazer o mapeamento objeto-relacional para nossa aplicação.
Para utilizar o Entity Framework Code-First CTP 5 faça o download do mesmo neste link e siga os seguintes passos:
1 – Crie as tabelas no banco de dados Microsoft SQL Server, conforme o script abaixo:
2 – No Visual Studio 2010, crie uma solution em branco. Para este exemplo criei uma solution com o nome “SolutionEF_CTP5”.
3 – Adicione um projeto Class Library a solution. Para este projeto utilizei o nome “EFCTP5.Data”.
4 – Crie as classes Cliente, Endereco, Solicitacao conforme o código abaixo:
5 – Após a adição destas classes, faça referências as DLLs:
- System.Data.Entity
- EntityFramework
(geralmente localizada em C:\Program Files (x86)\Microsoft ADO.NET Entity Framework Feature CTP5\Binaries\) - System.Configuration
6 – Criar a classe de contexto, que irá administrar as requisições com a base de dados. Faça esta classe herdar de DbContext (System.Data.Entity). Adicione propriedades para representação das tabelas utilizando o tipo de dados DbSet – este tipo de dados é próprio para representação de coleções e entidades que podem servir para construção de queries. Sobrescreva o método “OnModelCreating”, com o objetivo de evitar a convenção de que o nome das tabelas devem estar no plural (pluralizados). Adicione um bloco de código no construtor desta classe para que a string de conexão seja preenchida sempre que o contexto de banco de dados for instanciado.
8 – Criei um projeto console para testar a aplicação e adicione referência ao projeto criado anteriormente e a DLL do Entity Framework Code First CTP 5.
9 – Adicione um arquivo “App.Config” ao projeto e insira o seguinte bloco de configuração atribuindo uma string de conexão para o seu banco de dados:
10 – Adicione o código abaixo, na aplicação console, para testar a inclusão de novos registros.
11 – Adicione o código abaixo, na aplicação console, para a consulta de registros cadastrados na base de dados.
[]s! e até o próximo…
Parabéns pelo post, justamento o que eu estava precisando.
Olá Rener,
Obrigado pelo comentário.
Receber feedback é sempre muito bom…
Espero que tenha escrito de forma esclarecedora.
Pretendo escrever mais sobre o EF Code First.
[]s!
Se fosse pra você desenvolver uma aplicação web, não muito grande. Você usaria o CodeFirst ou deixaria o Entuty fazer o mapeamento sozinho? E porque?
Olá Rener,
Essa é uma boa pergunta…
Pois, o Code First tem se mostrado muito poderoso, mas ainda é CTP, isso quer dizer que da noite para o dia muita coisa pode mudar…
Já fiz um projeto utilizando o CTP 4… E do CTP 4 para o CTP 5 existem muitas mudanças, e muita coisa se tornou obsoleta, como boa parte do código que desenvolvi na época =]
Isso serviu de experiência para tomar cuidado com CTPs…
Eu acredito que o POCO é um padrão muito interessante de ser adotado nas aplicações, e logo será adotado como requisito básico de mercado… E temos diversas formas de implementá-lo… Podemos utilizar o Code First ou o próprio Entity Framework para faze-lo…
Acredito que os dois jeitos são interessantes de serem utilizados, mas em diferentes ocasiões…
O Entity Framework eu usaria quando meu banco de dados tivesse de seguir um padrão de nomentaclatura (i.e. tabelas começam com “tb”, vies começam com “vw”, colunas começam com os primeiros caracteres do nome da tabela), pois esse mapeamento é muito mais simples de ser feito no Entity Framework.
E utilizaria o Code First em projetos onde os objetos do banco de dados podem seguir a mesma nomenclatura que é utilizada nas classes…
Tomaria cuidado ao escolher a utilização do Code First, por ser CTP, mas já podemos apostar nessa tecnologia, e devemos já nos acostumar com a mesma, pois logo mais ela será integrada por completo ao Entity Framewok, quando lançada sua versão final…
[]s!
Olá Fernando,
Parabéns pelos posts, muito legais.
Por acaso vc teria um post desse atualizado e baseado no EF5?
Estou a procura de um bom material para utilizar via EF5 o Code First numa base existente.
Abs.
Fabiano
Olá Fabiano,
Tenho vários posts usando o EF Code First, e quase toda maioria é suportada pelo EF5.
Recomendo vc a estudar o Entity Framework Power Tools Beta 2, este plug-in do Visual Studio auxilia na criação do seu código, gerando automaticamente suas classes a partir de um banco de dados existente.
[]s!