ASP .NET MVC 4 - Code First com  EF 5 usando o recurso MvcScaffolding


Hoje vamos criar uma aplicação ASP .NET MVC4 usando o Entity Framework 5 usando o recurso da tecnologia Code First onde iremos criar os controladores e views usando o recurso MvcScaffolding.

A ASP .NET MVC 4 é o sucessor de MVC3, sendo um framework para a construção de aplicações escaláveis e baseadas em padrões da web utilizando padrões de projeto bem estabelecidas e o poder do ASP.NET e do NET Framework.

O Entity Framwork Entity (EF) é um mapeador Objeto-Relacional (OR/M) que permite aos desenvolvedores NET  trabalhar com dados relacionais usando o domínio de objetos específicos.. Ele elimina a necessidade da maioria do código de acesso a dados que os desenvolvedores geralmente precisam escrever.  

O Code -Frist é um recurso que permite descrever um modelo usando classes Visual Basic ou C# sendo uma nova metodologia disponível a partir da versão 4.1 do EF.

O MvcScaffolding é um pacote para ASP.NET que é instalado via NuGet usando o comando 'MvcScaffolding Install-Package' e que permite criar de forma automática a estrutura completa para controladores e views.

Recursos usados neste artigo:

Abra o Visual Studio Express 2012 for Web e no menu File clique em New Project;

Selecione o template Visual Basic -> Web -> ASP .NET MVC4 Web Application e informe o nome Tarefas e clique no botão OK;

A seguir selecione o template Internet Application e o engine Razor e clique no botão OK;

EM seguida vamos instalar o SQL Server Compact Edition usando Nuget. Para isso no menu TOOLS clique em Library Package Manager e a seguir em Package Manager Console;

Na janela do Package Manager Console digite o comando : Install-Package EntityFramework.SqlServerCompact

Dessa forma podermos usar o SQL Server Compact com o Entity Framework 5.

Vamos agora instalar outros componentes necessários ao nosso projeto.

Ainda na janela Package Manager Console digite o comando : Install-Package EntityFramework

Isso irá instalar o Entity Framework 5 no projeto se o mesmo ainda não estiver instalado.

Agora vamos usar o recurso MvcScaffolding digitando na janela do Package Manager Console o comando: Install-Package MvcScaffolding

Vamos definir agora as classes do nosso domínio na pasta Models;

Clique com o botão direito do mouse sobre a pasta Models e a seguir clique em Add-> Class;

Informe o nome Tarefa.vb e digite o código abaixo que define a classe Tarefa:

Imports System.ComponentModel.DataAnnotations

Imports System.ComponentModel.DataAnnotations.Schema


Public
Class Tarefa

   <Key> _

   Public Property TarefaId() As Integer

  Public Property Nome() As String

   Public Property Descricao() As String

   Public Property StatusId() As System.Nullable(Of Integer)

   <ForeignKey("StatusId")> _

   Public Overridable Property Status() As Status

  Public Overridable Property Notas() As ICollection(Of Nota)

   Public Property CriadaEm() As System.Nullable(Of DateTime)

   Public Property ModificadaEm() As System.Nullable(Of DateTime)

End Class

 

Repita o procedimento e crie também a classe Nota:

Imports System.ComponentModel.DataAnnotations


Public
Class Nota

  <Key> _

  Public Property NotaId() As Integer

  Public Property Descricao() As String

  Public Property TarefaId() As System.Nullable(Of Integer)

  Public Property CriadEm() As System.Nullable(Of DateTime)

  Public Property ModificadaEm() As System.Nullable(Of DateTime)

End Class

E finalmente a classe Status:

Imports System.ComponentModel.DataAnnotations


Public
Class Status

   <Key> _

   Public Property StatusId() As Integer

   Public Property Nome() As String

End Class

Nosso domínio irá gerenciar tarefas definindo o seu status e definindo observações associadas a cada tarefa.

Agora que já temos os recursos instalados vamos criar os controladores digitando na janela Package Manager Console o comando : Scaffold Controller Tarefa - Repository

A seguir repita o comando para a classe Nota e para a classe Status conforme mostrado abaixo pelos comandos:

A palavra -Repository indica que eu vou efetuar o acesso aos dados usando um repositório.

Observe que são criados de forma automática na pasta Controllers os respectivos Controladores e na pasta Views a respectiva pasta com suas Views;

E Pronto ! já temos tudo preparado para rodar a aplicação.

Só precisamos fazer um pequeno ajuste para podermos acessar diretamente os recursos instalados.

Abra o arquivo _Layout.vbhtml na pasta Views/Shared e altere o seu conteúdo conforme mostrado a seguir:

Agora é só rodar...

Não acredita !!!

Então rode o projeto e você irá ver a janela principal

Acessando o link para Tarefas teremos um link para criar um nova tarefa visto que ainda não temos nada cadastrado.

Clicando no Link teremos a página abaixo onde podemos cadastrar as nossas tarefas:

O mesmo irá ocorrer com os links para Notas e Status.

Abaixo vemos a janela exibindo algumas informações para Status:

Se você estiver se perguntando onde as informações são armazenadas, a resposta é que elas são armazenadas no banco de dados e nas tabelas que o Code-First criou de forma automática com base nas classes POCO.

Selecione a pasta App_Data e n a janela Solution Explorer clique no ícone Show All Files;

Clique duas vezes sobre o item Tarefas.Models.TarefasContext.sdf e você verá na janela DataBase Explorer o banco de dados SQL Server Compact e as tabelas Notas, Status e Tarefas conforme mostra a figura abaixo:

Vamos abrir a tabela Status e verificar se os dados que cadastramos estão armazenados na tabela.

Clique com o botão direito sobre a tabela Status e selecione Show Table Data;

Voilá.. temos os dados armazenados conforme esperado.

Pois é isso aí...

Você pode alterar a aplicação criada à vontade melhorando-a e incrementando os seus recursos mas o que quis mostrar foi como todo o trabalho de geração das classes para controladores e views e como a geração do banco de dados e das tabelas pode ser feito de forma automática com os recursos da ASP .NET MVC e da plataforma .NET.

Mais produtividade e mais qualidade de vida com menos probabilidade de erros.

Mar 3:20 Depois entrou numa casa. E afluiu outra vez a multidão, de tal modo que nem podiam comer.

Mar 3:21 Quando os seus ouviram isso, saíram para o prender; porque diziam: Ele está fora de si.

Mar 3:22 E os escribas que tinham descido de Jerusalém diziam: Ele está possesso de Belzebu; e: É pelo príncipe dos demônios que expulsa os demônios.

Mar 3:23 Então Jesus os chamou e lhes disse por parábolas: Como pode Satanás expulsar Satanás?

Mar 3:24 Pois, se um reino se dividir contra si mesmo, tal reino não pode subsistir;

Mar 3:25 ou, se uma casa se dividir contra si mesma, tal casa não poderá subsistir;

Referências:


José Carlos Macoratti