Caro(a) Leitor(a) hoje eu vou falar e mostrar na prática como trabalhar com MVC e “Entity Framework”,  com ele você vai poder criar um sistema ou site. Pra quem não sabe o que é MVC, é um padrão de desenvolvimento que tomou o mundo.


                Como esse padrão é amplo, cada empresa de software criou o seu e esse é  baseado na Microsoft seguindo o padrão “Model View Controller”.


Foi usado:

Ferramenta Visual Studio 2012

Banco de dados SQL Server 2008

Linguagem C#

Tipo do projeto MVC Web

 

                Antes de começar a mostrar o desenvolvimento, vou falar sobre o que fiz e qual foi a minha ideia. Lembro que vou focar mais na prática do que na teoria.


                A primeira coisa que você precisa saber quando for usar MVC é a criação do projeto. Esse tipo de projeto precisa ser pensado desde o início, isso porque o modo de fazer é totalmente diferente do tradicional ASPX.


                A outra parte não menos importante é a comunicação com o banco de dados, pra isso eu usei no exemplo o famoso “Entity Framework” criado pela Microsoft.


                O “Entity” foi criado para ajudar o desenvolvedor a se conectar com o banco de dados, mandar instruções como INSERT, SELECT, UPDATE e DELETE de uma melhor maneira usando menos linhas de código.


                Lembre-se o que falei anteriormente, cada empresa tem a sua maneira de construir MVC e atuar. A Microsoft criou o jeito dela, a Sun criou o dela, a linguagem PHP tem o jeito dela e assim por diante.


Você pode criar as classes que achar necessário, subdividir o projeto em vários projetos e desconectar as partes do sistema.


                Desconectar as partes do sistema é muito importante para quem usa esse tipo de projeto. Em resumo, a parte que conecta no banco de dados tem que ser uma parte separada ou desconectada, isso porque se for preciso mudar de banco, basta alterar as classes e tudo vai funcionar.


                Isso também funciona para a parte do layout, se você for fazer um projeto para web e outro para desktop que usa o mesmo banco de dados, pra que utilizar ou recriar as classes já criadas? O mesmo é reaproveitar as classes de controles e regras de negócio, o que é mudado é apenas o layout.


                Para usar a ferramenta Visual Studio 2012 gratuitamente, acesse o site  http://www.microsoft.com/visualstudio/ptb/downloads e faça download do módulo “Express”. Lá tem as ferramentas para desenvolvimento “Web”, “Desktop”, “Windows 8”, “Windows Phone” e mais.



Figura 1 – Tipos de projeto – Fonte: Microsoft

                Dependendo do seu projeto, baixe o tipo que achar melhor e de acordo com a sua necessidade.

 

Na prática

                Se você faz parte de uma empresa hoje que tem suas áreas separadas, como o DBA (responsável por criar banco de dados, criar tabelas, gerar informações, gerar “procedures” e mais), desenvolvedor (analista e criador de software para qualquer plataforma), arquiteto de software e outros; então você deve saber o desenvolvedor não tem acesso para criar tabelas.


                Como desenvolvedor você só começa a codificar depois que o banco de dados já está pronto. Muitos exemplos que vi na “Internet”, os desenvolvedores faziam o banco de dados. Isso não é a nossa realidade ou não é assim que acontece no dia a dia.

 


                O exemplo aqui será mostrado como se o banco de dados já estivesse pronto e o desenvolvedor tivesse que fazer o software que grava as informações dentro do SQL Server.


                Veja a estrutura do nosso banco de dados, figura 2.



Figura 2 – Estrutura do banco de dados

                As duas tabelas já estão prontas e vinculadas. A tabela de usuários e uma tabela de sites, uma vinculada à outra pela chave primária e chave estrangeira.


                Agora preciso criar um projeto do tipo MVC para conectar ao banco e inserir, alterar, excluir e selecionar valores. Clique em “File >> New >> Project”, figura 3.



Figura 3 – Criando um projeto novo.


                O próximo passo é escolher a linguagem e o tipo do projeto, no nosso caso é MVC. Figura 4.



Figura 4 – Escolhendo a linguagem e o tipo de projeto

                Note que figura 4, a linguagem escolhida é a C# Web e o tipo de “template” escolhido é o “ASP.NET MVC 4 Web Application”. Basta agora colocar o nome do projeto e clicar no botão OK.


                Depois de ter o projeto, saber o banco de dados e as tabelas, precisa instalar o componente da Microsoft, responsável pelo “drive” de comunicação entre a página e o banco.  


                Existem pessoas que fazem o seu próprio “framework de dados” e outras utilizam componentes prontos. No nosso caso, vamos utilizar o componente “Entity Framework” mencionado anteriormente, (figura 5).


Clique com o botão direito em cima da pasta “References” e clique no menu “Manager NuGet Packages...”. Procure com por “Entity Framework” versão 5.0.0 e instale esse pacote, mostrado na figura 5.

 

Figura 5 – Instalando o “Entity Framework”


                O projeto “template” possui três pastas “Controller, Models e Views”, figura 6.



Figura 6 – Pastas MVC

                O próximo passo é criar as classes de acordo com as tabelas do banco de dados. Se eu tenho uma tabela chamada Site, vou criar uma classe chamada Site.cs. Se tenho outra tabela chamada Usuario, vou criar uma classe chamada Usuario.cs e assim por diante. Isso deve acontecer dentro da pasta Model.


                Cliquei com o botão direito do mouse em cima da pasta “Models”, escolhi a opção Add >> Class e coloquei o nome Site.cs. Listagem 1.

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Data.Entity;

using System.ComponentModel.DataAnnotations;

using System.ComponentModel.DataAnnotations.Schema;


namespace MVCSAC.Models

{

    public class Site

    {

        [Key]

        public int CHSite { get; set; }


        [Required(ErrorMessage=("Digite o nome do site."))]

        [Display(Name="Nome do Site")]

        public string NOSite { get; set; }


        [Required(ErrorMessage=("Digite a situação"))]

        [Display(Name="Situação")]

        public string SITSite { get; set; }


    }

}

Listagem 1 – Classe Site

                Note que cada atributo possui “get e set” dos campos no banco de dados. A chave da tabela é indicada dentro da classe normalmente, basta usar o comando “Key”.  


                O comando “Required” indica que esse campo precisa ser preenchido e se não for preenchido vai aparecer à frase indicada.


                O comando “Display” é o nome que vai aparecer ao usuário dentro da página, para não aparecer o nome do campo na tela do usuário.


                Depois de criar a classe parecida com o banco de dados, vamos criar outra classe para conectar ao banco de dados. O nome dessa classe deve ser o mesmo nome da conexão.


                Crie uma classe de conexto chamada iSACContext.cs. Herdei o “DbContext” do Entity e adicionei a classe como tabela. Listagem 2.

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Data.Entity;

using MVCSAC.Models;


namespace MVCSAC.DAL

{

    public class iSACContext : DbContext

    {

        public DbSet < Sites > { get; set; }

 

        public iSACContext()

        {

           Database.SetInitializer(null);

        }

    }

}

Listagem 2 – Classe de Conexão com o banco de dados


                Note que coloquei o DbSet para indicar a classe como uma tabela e dei o nome da variável Sites {get ; set;}.


                Passando agora para o arquivo “Web.config”, o nome da conexão precisa ser o mesmo nome da classe de conexão. Listagem 3.

< connectionStrings >

    < add name="iSACContext" connectionString="Data Source=(local);Initial Catalog=iSAC;
Integrated Security=SSPI" providerName="System.Data.SqlClient" / >

< / connectionStrings >

Listagem 3 – Colocando a conexão dentro do Web.config.


                A string de conexão contém primeiramente o nome e depois a “connectionString” com os dados do servidor, banco de dados e “provider”.


                Com isso, a conexão está pronta e o sistema conecta no banco sem qualquer problema. O próximo artigo eu vou falar como criar as classes e as operações de inserir, alterar, deletar, selecionar  usando MVC.


                Qualquer dúvida pode entrar em contato pelo site www.mauriciojunior.org. Até o próximo artigo de continuação.