como code first (código primeiro, em português). Para que esta ideia torne-se mais 47
4.3. O Entity Framework
Casa do Código
clara, vamos à prática. Criaremos um projeto paralelo, em nada relacionado ao Cadêmeu médico. Faremos desta forma porque para Cadê meu médico utilizaremos outra estratégia.
Com Visual Studio já em execução, crie um novo projeto ASP.NET MVC 4 (se-
guindo os passos já apresentados nos capítulos anteriores a este). Sugestivamente nomearemos esta aplicação de exemplo como AplicacaoComCodeFirst. Vale observar que você precisará estar com Microsoft SQL Server 2012 Express instalado para completar este exercício. O projeto que estamos utilizando para exemplificar o funcionamento do code first é do tipo internet application. Ele utiliza view engine Razor e não utiliza projeto de testes. A solution explorer deste projeto pode ser visualizada pela figura 4.2.
Figura 4.2: Solution explorer do projeto AplicacaoComCodeFirst
Por se tratar de um projeto do tipo internet application, quando executada, a
aplicação tratá um template padrão (semelhante àquele apresentado no capítulo 1).
48
Casa do Código
Capítulo 4. Models: Desenhando os modelos da nossa aplicação
Você conhece o SQL Server 2012?
O Microsoft SQL Server 2012 é a versão mais atual da plataforma de
dados relacionais da Microsoft. Através dela, é possível gerenciar qual-
quer ocorrência relacionada aos bancos de dados relacionais, incluindo
ferramentas para mineração e extração de dados não convencionais, bu-
siness intelligence [1], interface gráfica para administração (SQL Mana-
gement Studio), entre diversos outros recursos.
A versão Express do SQL Server 2012 é disponibilizada gratuitamente
e suporta bancos de dados com capacidade de até 10 GB. Para saber mais,
você pode seguir o link:
http://bit.ly/mvc-sqlexpress
Um bom exemplo para que possamos entender de forma clara e prática o funci-
onamento do mecanismo de code first com Entity Framework dentro
da plataforma
.NET em projetos ASP.NET MVC é uma fração das funcionalidades de blog, ou seja, posts e suas respectivas categorias. Desta forma, imaginando a estrutura mais simples possível para este tipo de funcionalidade, poderemos ter a seguinte relação: uma categoria pode possuir múltiplos posts enquanto um post pode estar atrelado a apenas uma categoria.
Além da cardinalidade 1 para n configurada pela relação apresentada no pará-
grafo anterior, temos notoriamente visíveis duas entidades: Categorias e Posts.
Muito embora esta seja uma relação simples, ela nos possibilitará apresentar alguns importantes recursos do framework MVC, além é claro, de apresentar o code first em ação.
Criando as classes POCO
Quando falamos em code first, automaticamente falamos em classes POCO. Isso
porque não é possível dissociar uma coisa da outra.
POCO é o acrônimo para Plain Old CLR Object. O termo é uma derivação do
termo POJO (Plain Old Java Object), originalmente utilizado pela comunidade Java, como você pode imaginar. A ideia deste tipo especial de classe é ser um agente independente de frameworks e/ou componentes dentro da plataforma .NET. Assim,
classes podem herdar seus comportamentos, interfaces podem ser implementadas e ainda, atributos podem ser persistidos.
49
4.3. O Entity Framework
Casa do Código
Tendo em mente a importância das classes POCO principalmente para o con-
texto de ORMs (claro, especialmente para o EF), iniciaremos nossas atividades criando nossas duas classes POCO principais: Categorias e Posts. No momento
posterior, elas servirão de base para que o EF implemente as entidades no banco de dados da aplicação.
Desta forma, a primeira ação neste sentido será criar a classe Categorias. Para isso, basta adicionar uma nova classe à pasta Model da aplicação e nomeá-la com a palavra Categorias, conforme ilustra a figura 4.3.
Figura 4.3: Adicionando uma classe ao diretório Model
Uma classe com estrutura básica será automaticamente gerada pelo Visual
Studio. Substitua este conteúdo por aquele apresentado pela listagem 4.
Listagem 4.4 - Classe POCO para Categorias:
public class Categorias
{
[Key]
public int CategoriaID { get; set; }
50
Casa do Código
Capítulo 4. Models: Desenhando os modelos da nossa aplicação
public string Categoria { get; set; }
public string Descricao { get; set; }
public virtual ICollection<Posts> Posts { get; set; }
}
Como você pode perceber, a estrutura da classe é bem simples e dispensaria co-
mentários para um desenvolvedor com certa experiência no trato com ORMs. En-
tretanto, é possível que as observações a seguir sejam úteis para você que não se enquadra na situação apresentada há pouco.
Atributo [Key]: indica ao Entity Framework que a propriedade imediata-
mente na sequência (no caso, CategoriaID) deverá ser considerada chave
primária no momento da geração do banco de dados no servidor de destino.
É possível parametrizar este atributo conforme a necessidade para emplacar
comportamentos específicos (como a adição ou não da cláusula identity).