SlideShare a Scribd company logo
1 of 68
Download to read offline
Diemesleno Souza Carvalho – Innfomaster T.I.
Sobre o mini-curso
Objetivos
Programação para Web
Linguagens dinâmicas e estáticas
Programação em camadas – MVC
Desenvolvimento sistema exemplo
Conclusão
Não é um curso de algoritmo.
Não é um curso de programação.
Não é um curso de Orientação a Objetos.
Não é um curso de estrutura de dados.
Não é um curso de SQL.
Não é um curso de design.

É um curso que engloba todos os ítens
  listados acima de forma básica e algumas
  coisas a mais.
Não é torna-lo um expert em
 desenvolvimento para web.

É sim, fazê-lo compreender melhor o
  processo de desenvolvimento de
  softwares para a internet de forma ágil.
Diferente da programação ‘Desktop’
Extremamente complexa
Extremamente dinâmica
Extremamente trabalhosa
Extremamente prazerosa
Linguagens dinâmicas
 Rodam do lado do servidor (Server Side)
 Interagem com banco de dados
 C#, Java, PHP, Python, Ruby, Lua


Linguagens estáticas
 Rodam do lado do cliente (Client Side)
 Interagem com o usuário
 Javascript, CSS
M
    Model
    Representa o modelo de dados dos objetos
    Mantêm as regras de negócios dos objetos
V
    View
    Representa a parte visual da aplicação
    Web, Desktop, Mobile
C
    Controller
    Controla as ações entre o model e a view
Criar banco de dados (1)
Criar tabelas no banco (2)
Criar a solução (3)
Criar um projeto Web Application (4)
Criar um projeto Class Library (DAO) (5)
Criar um projeto Class Library (DCL)(6)
Criar um arquivo dbml (7)
Conectar à base de dados (8)
Mapear banco no dbml (9)
Configurar o web.config (10)
Configurar referências (11)
Criar a classe Recursos (DCL) (12)
Criar a BaseDCL.class (13)
Criar a BaseDAO.class (14)
Criar a classe Categoria (DCL) (15)
Criar a classe CategoriaDAO (DAO) (16)
Criar a classe Produto (DCL) (17)
Criar a classe ProdutoDAO (DAO) (18)
Criar a master page (19)
Configurar a master page (20)
Criar a página com CRUD da Categoria (21)
Criar a página com CRUD do Produto (22)
Testar a aplicação (23)
Finalizar aplicação (24)
Preparar a publicação (25)
1.   Abrir o SQL Management.
2.   Em “Security” clicar com botão direito em “Login”
     e selecionar “new login”.
3.   Criar p usuario “sistemadba” com senha
     “515t3m4db4”.
4.   Em Databases, clicar com botão direito em “new
     database”.
5.   Definir “miniCurso” para o nome.
1.   Ainda no SQL Management
2.   Clique com o botão direito no banco criado e
     selecione “New Query”.
3.   Copie o conteúdo do arquivo miniCurso.SQL
     para a query e execute.
4.   Confira se as tabelas foram criadas.
5.   Feche o SQL Management.
1.   Abra o Visual Studio 2008.
2.   Clique em “File->New->Project”.
3.   Na guia “Other Project Types” selecione “Visual
     Studio Solutions”.
4.   Dê o nome de miniCursoSLN.
1.   Em “Solution Explorer” clique com o botão direito
     na solução e selecione “Add->New Project”.
2.   Na guia “Visual C#” selecione “Web->ASP.NET
     Web Application” .
3.   Dê o nome de “miniCursoAPW”.
1.   Em “Solution Explorer” clique com o botão direito
     na solução e selecione “Add->New Project”.
2.   Na guia “Visual C#” selecione “Windows->Class
     Library” .
3.   Dê o nome de “miniCursoDAO”.
1.   Em “Solution Explorer” clique com o botão direito
     na solução e selecione “Add->New Project”.
2.   Na guia “Visual C#” selecione “Windows->Class
     Library” .
3.   Dê o nome de “miniCursoDCL”.
1.   Em “Solution Explorer” clique com o botão direito
     no projeto “miniCursoDCL” e selecione “Add->
     New Item”.
2.   Selecione a categoria “Data->LINQ to SQL
     CLASSES” .
3.   Dê o nome de “miniCurso”.
1.   Em “Server Explorer” clique com o botão direito em “Data
     Conections” e selecione “Add Conection”.
2.   Em “Server name” coloque o nome do servidor de banco
     de dados “nomeMaquinaSQLEXPRESS”.
3.   Selecione a opção “Use SQL Server Authentication”.
4.   Em “User name” coloque “sistemadba”.
5.   Em “Password” coloque “515t3m4db4” (Save my
     password).
6.   Em “Select or enter a database name” digite “miniCurso”.
7.   Clique em “Test Connection”
1.   Em “Server Explorer” expanda as tabelas do banco
     “miniCurso” da conexão criada.
2.   Selecione todas as tabelas e arraste para o arquivo
     “miniCurso.dbml” aberto.
3.   Salve o arquivo “miniCurso.dbml”.
4.   Clique em “Build->Rebuild Solution”.
1.       Em “Solution Explorer” abrir o arquivo “web.config”
2.       Antes de fechar a tag </configSettings> adicione o
         conteúdo abaixo:

<sectionGroup name="applicationSettings"
    type="System.Configuration.ApplicationSettingsGroup, System, Version=2.0.0.0,
    Culture=neutral, PublicKeyToken=b77a5c561934e089">
   <section name="miniCursoAPW.Properties.Settings“
    type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral,
    PublicKeyToken=b77a5c561934e089" requirePermission="false"/>
  </sectionGroup>


3.      Abaixo da tag <system.web> adicionar:

     <globalization culture="pt-BR" uiCulture="pt-BR" enableClientBasedCulture="true"/>
4.   Abaixo da tag </configSettings> adicione:

<connectionStrings>
 <add name="ConnMiniCursoDesenvolvimento" connectionString="Data
    Source=NomeMaquinaSQLEXPRESS;Initial Catalog=miniCurso;Persist Security
    Info=True;User ID=sistemadba;Password=515t3m4db4"
    providerName="System.Data.SqlClient"/>
 <add name="ConnMiniCursoHomologacao" connectionString="Data
    Source=NomeMaquinaSQLEXPRESS;Initial Catalog=miniCurso;Persist Security
    Info=True;User ID=sistemadba;Password=515tem4db4"
    providerName="System.Data.SqlClient"/>
 <add name="ConnMiniCursoProducao" connectionString="Data
    Source=NomeMaquinaSQLEXPRESS;Initial Catalog=miniCurso;Persist Security
    Info=True;User ID=sistemadba;Password=515t3m4db4"
    providerName="System.Data.SqlClient"/>
</connectionStrings>
5.    Na tag <compilation debug> colocar como “true”
6.    Na tag <authentication mode> colocar como “Forms”
7.    Antes de fechar a tag <httpHandlers> adicionar:

<add path="Reserved.ReportViewerWebControl.axd" verb="*"
    type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms,
    Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" validate="false"/>


8.   Antes de fechar a tag </configuration> adicionar:
     <appSettings>
            <add key="AppAmbiente" value="Desenvolvimento"/>
            <add key="VirtualPath" value=""/>
     </appSettings>
     <system.web>
            <httpRuntime maxRequestLength="102400"/>
     </system.web>
1.   No “Solution Explorer” expanda o projeto miniCursoAPW e
     no diretório “References” adicione as seguintes:
        AjaxControlToolkit
        miniCursoDAO
        miniCursoDCL
        System.Runtime.Serialization
        System.ServiceModel
        System.Transactions


2.   Expanda agora o projeto miniCursoDAO e adicione as
     seguintes referências:
       miniCursoDCL
       System.configuration
       System.Data.Linq
       System.Transactions
3.   Expanda o projeto miniCursoDCL e adicione as seguintes
     referencias:
        System.configuration
        System.Drawing
        System.Web
1.   No projeto miniCursoDCL crie uma nova classe com o
     nome “Recursos”.

2.   Adicione os seguintes “usings”:
      using System.Web.UI.WebControls;
      using System.IO;
      using System.Web;
      using System.Configuration;
      using System.Web.Security;


3.     Torne a classe “Pública”.
4.        Crie o seguinte método:

public static string RetornarStringConexao()
{
       string AppAmbiente = ConfigurationManager.AppSettings["AppAmbiente"].ToString().ToLower();
       string strConexao = string.Empty;

         switch (AppAmbiente)
         {
           case "producao":
              strConexao = ConfigurationManager.ConnectionStrings["ConnMiniCursoProducao"].ConnectionString;
              break;
           case "homologacao":
              strConexao = ConfigurationManager.ConnectionStrings["ConnMiniCursoHomologacao"].ConnectionString;
              break;
           default:
              strConexao =
         ConfigurationManager.ConnectionStrings["ConnMiniCursoDesenvolvimento"].ConnectionString;
              break;
         }
         return strConexao;
     }
4.     Dentro do projeto “miniCursoDCL” crie uma classe com o
       nome de “BaseDCL”.

5.     Adicione os seguintes “usings”:
         using System.Runtime.Remoting.Messaging;
         using miniCursoDCL;


6.        Altere o namespace para “miniCursoBaseDCL”.

7.        Altere o tipo da classe para “Publica Abstrata”.

8.        Crie a seguinte variavel dentro do método da classe:

internal miniCursoDataContext sdc = (miniCursoDataContext)CallContext.GetData("miniCursoDataContext");
9.    Logo abaixo da variável criada, crie o método abaixo:

public BaseDCL()
    {
       if (sdc == null)
       {
           sdc = new miniCursoDataContext(Recursos.RetornarStringConexao());
           CallContext.SetData("miniCursoDataContext", sdc);
       }
    }
1.      No projeto miniCursoDAO crie uma classe com o nome
        “BaseDAO”.

2.      Adicione os seguintes “usings”:
          using System.Runtime.Remoting.Messaging;
          using miniCursoDCL;


3.     Mude o namespace para “miniCursoBaseDAO”.

4.     Troque o tipo da classe para “Pública Abstrata”.

5.     Crie a seguinte variável dentro da classe:

internal miniCursoDataContext dataContext = (miniCursoDataContext)CallContext.GetData("miniCursoDataContext");
6.    Crie o seguinte método logo abaixo da variável criada
      anteriormente:

public BaseDAO()
{
    if (dataContext == null)
    {
          dataContext = new miniCursoDataContext(Recursos.RetornarStringConexao());
          CallContext.SetData("miniCursoDataContext", dataContext);
        }
    }
1.   Dentro do projeto “miniCursoDCL” crie uma classe com o
     nome “Categoria”.

2.   Adicione o seguinte “using”:
       using miniCursoBaseDCL;


3.   Mude o tipo da classe para “Pública Parcial” e extenda a
     classe “BaseDCL”.
4.       Crie o seguinte método dentro da classe:

public bool Validar()
{
    try
      {
         bool flag = true;

           if (string.IsNullOrEmpty(this.desCategoria))
           {
               flag = false;
           }
           return flag;
         }
         catch (Exception)
         {
           throw;
         }
     }
1.   Dentro do projeto “miniCursoDAO” crie uma classe com o
     nome “CategoriaDAO”.

2.   Adicione os seguintes “usings”
      using System.ComponentModel;
      using miniCursoBaseDAO;
      using miniCursoDCL;


3.    Torne a classe “Pública” e extenda a classe
      BaseDAO

4.    Adicione logo acima do nome da classe o seguinte:

      [System.ComponentModel.DataObject]
5.   Dentro do projeto “miniCursoDAO” crie uma classe com o
     nome “.

6.   Crie o seguinte método (Select com filtro):

[DataObjectMethod(DataObjectMethodType.Select, false)]
 public List<Categoria> ObterListaComFiltro()
 {
    var query = (from c in dataContext.Categorias
                 where c.flaStatus != 'E'
                 select c);
       return query.ToList();
     }
7.   Crie o seguinte método (Select sem filtro):

[DataObjectMethod(DataObjectMethodType.Select, false)]
 public List<Categoria> ObterLista()
 {
    var query = (from c in dataContext.Categorias
                 select c);
       return query.ToList();
     }
7.        Crie o seguinte método (Select Por Código):
public Categoria buscaPorChave(int idCategoria)
{
   try
      {
        Categoria tpCategoria = dataContext.Categorias.Where(tr => tr.idCategoria =
      idCategoria).SingleOrDefault();

           if (tpCategoria != null)
           {
               return tpCategoria;
           }
           else
           {
               return null;
           }
         }
         catch (Exception)
         {
           throw;
         }
     }
7.       Crie o seguinte método (Insert):
[DataObjectMethod(DataObjectMethodType.Insert, false)]
     public void Inserir(Categoria tpCategoria)
     {
       try
       {
          if (tpCategoria.Validar())
          {
              dataContext.Categorias.InsertOnSubmit(tpCategoria);
              dataContext.SubmitChanges();

           }
         }
         catch
         {
           throw;
         }
     }
7.        Crie o seguinte método (Update):
[DataObjectMethod(DataObjectMethodType.Update, false)]
    public void Alterar(Categoria tpCategoria)
    {
      try
      {
         Categoria categoria = buscaPorChave(tpCategoria.idCategoria);
         if (categoria != null)
         {
             categoria.desCategoria = tpCategoria.desCategoria;

               if (categoria.Validar())
               {
                   dataContext.SubmitChanges();
               }
           }
         }
         catch (Exception)
         {
           throw;
         }
     }
7.        Crie o seguinte método (Delete - Lógico):
public bool exclui(int idCategoria)
    {
       bool atualizou = false;
       try
       {
          Categoria tpCategoria = dataContext.Categorias.Where(tr => tr.idCategoria == idCategoria).SingleOrDefault();

           if (tpCategoria != null)
           {
               tpCategoria.flaStatus = 'E‘;
               dataContext.SubmitChanges();
               atualizou = true;
           }
         }
         catch (Exception)
         {
           throw;
         }
         return atualizou;
     }
1.   No projeto “miniCursoDCL” crie uma classe com o
     nome “Produto”.

2.   Adicione o seguinte “using”:
       using miniCursoBaseDCL;


3.   Modifique a classe para “Pública Parcial” e extenda a
     classe BaseDCL.
4.       Dentro da classe, crie o seguinte método:

public bool Validar()
{
     try
       {
         bool flag = true;

           if (string.IsNullOrEmpty(this.desProduto))
           {
               flag = false;
           }
           return flag;
         }
         catch (Exception)
         {
           throw;
         }
     }
1.   Dentro do projeto “miniCursoDAO” crie a classe
     “ProdutoDAO”.

2.   Adicione os seguintes “usings”:
      using System.ComponentModel;
      using miniCursoBaseDAO;
      using miniCursoDCL;


3.     Modifique o tipo da classe para “Pública” e extenda a
       classe “BaseDAO”.

4.     Adicione a seguinte linha logo acima do nome da classe:

       [System.ComponentModel.DataObject]
5.   Crie o seguinte método. (Select com filtro)

[DataObjectMethod(DataObjectMethodType.Select, false)]
 public List<Produto> ObterListaComFiltro()
 {
   var query = (from p in dataContext.Produtos
                where p.flaStatus != 'E'
                select p);
       return query.ToList();
    }
5.   Crie o seguinte método. (Select sem filtro)

[DataObjectMethod(DataObjectMethodType.Select, false)]
 public List<Produto> ObterListaComFiltro()
 {
   var query = (from p in dataContext.Produtos
                select p);
       return query.ToList();
    }
5.    Crie o seguinte método. (Select com join)

[DataObjectMethod(DataObjectMethodType.Select, false)]
 public object ObterListaModify()
 {
       var query = (from p in dataContext.Produtos
                     join c in dataContext.Produtos on p.idProduto equals c.idProduto
                    select new
                   {
                       idProduto = p.idProduto,
                      desProduto = p.desProduto,
                      idCategoria = p.idCategoria,
                      desCategoria = c.desCategoria,
                      flaStatus = p.flaStatus
                   });
         return query.ToList();
    }
5.        Crie o seguinte método. (Select por chave)

public Produto buscaPorChave(int idProduto)
{
     try
       {
         Produto tpProduto = dataContext.Produtos.Where(tr => tr.idProduto == idProduto).SingleOrDefault();

           if (tpProduto != null)
           {
               return tpProduto;
           }
           else
           {
               return null;
           }
         }
         catch (Exception)
         {
           throw;
         }
     }
5.    Crie o seguinte método. (Insert)

[DataObjectMethod(DataObjectMethodType.Insert, false)]
 public void Inserir(Produto tpProduto)
 {
       try
       {
          if (tpProduto.Validar())
          {
              dataContext.Produtos.InsertOnSubmit(tpProduto);
              dataContext.SubmitChanges();
          }
       }
       catch
       {
          throw;
       }
    }
5.      Crie o seguinte método. (Update)

[DataObjectMethod(DataObjectMethodType.Update, false)]
 public void Alterar(Produto tpProduto)
 {
       try
       {
          Produto produto = buscaPorChave(tpProduto.idProduto);
          if (produto != null)
          {
              produto.desProduto = tpProduto.desProduto;
              produto.idCategoria = tpProduto.idCategoria;

          if (produto.Validar())
          {
              dataContext.SubmitChanges();
          }
        }
      }
      catch (Exception)
      {
        throw;
      }
 }
5.     Crie o seguinte método. (Delete - Lógico)

public bool exclui(int idProduto)
{
      bool atualizou = false;
      try
      {
         Produto tpProduto = dataContext.Produtos.Where(tr => tr.idProduto == idProduto).SingleOrDefault();

       if (tpProduto != null)
       {
           tpProduto.flaStatus = 'E';

           dataContext.SubmitChanges();
           atualizou = true;
       }
     }
     catch (Exception)
     {
       throw;
     }
     return atualizou;
 }
1.   No projeto “miniCursoAPW” clique com o botão direito e
     selecione “Add->New Item”.

2.   Na categoria “Visual C#” selecione Master Page e dê o
     nome de “miniCurso”.
1.   No projeto “miniCursoAPW” clique com o botão direito e
     selecione “Add->New Folder”.

2.   Dê o nome de “css”.

3.   Crie um novo diretório e chame de “images”.

4.   Copie o arquivo “style.css” de dentro do diretório “css” em
     “Arquivos Auxiliares” para o diretório “css” do projeto
     criado.

5.   Copie as imagens do diretório “images” dentro de “Arquivos
     Auxiliares” para o diretório “images” do projeto criado.
6.   Na página “miniCurso.Master” apague o conteúdo da
     segunda linha para baixo.

7.   Copie o conteúdo do arquivo “miniCurso.Master.txt” do
     diretório “Arquivos Auxiliares” para logo abaixo da primeira
     linha da página “miniCurso.Master”.

8.   No arquivo “miniCurso.Master.cs” adicione os seguintes
     “usings”:
      using System.Data;
      using AjaxControlToolkit;
      using System.Configuration;
      using System.Drawing;
      using System.Web.UI.HtmlControls;
9.   Copie o método do arquivo “miniCurso.Master.cs.txt” que
     está dentro do diretório “Arquivos Auxiliares” para o arquivo
     “miniCurso.Master.cs” do projeto logo abaixo do método
     “Page_Load”.
1.   Clique com o botão direito no projeto “miniCursoAPW”,
     selecione “Add->New Item”.

2.   Dentro da categoria “Visual C#” selecione “Web Content
     Form”, dê o nome de “cadCategoria” e selecione a
     “miniCurso.Master” como Master Page.
3.   Na página “cadCategoria.aspx” dentro do “Content2”
     adicione o código abaixo:

* Ver em “cadCategoria_Content2.aspx.txt”
4.   Na página “cadCategoria.aspx” dentro do “Content3”
     adicione o código abaixo:

* Ver em “cadCategoria_Content3.aspx.txt”

5.   Na página “cadCategoria.aspx.cs” adicionar os seguintes
     “usings”:
       using miniCursoDCL;
       using miniCursoDAO;


6.   Instancie os seguintes objetos:
       Categoria categoria = new Categoria();
       CategoriaDAO categoriaDAO = new CategoriaDAO();
7.    Ainda na página “cadCategoria.aspx.cs” criar o método
      “Cadastrar”.
        Ver arquivo “cadCategoria_Cadastrar.aspx.cs.txt”


8.    Criar o método “Atualizar”.
        Ver arquivo “cadCategoria_Atualizar.aspx.cs.txt”


9.    Criar o método “Editar”.
        Ver arquivo “cadCategoria_Editar.aspx.cs.txt”


10.   Criar o método “Excluir”
        Ver arquivo “cadCategoria_Excluir.aspx.cs.txt”
11.     Criar o método “limparCampos”.
           Ver arquivo “cadCategoria_LimparCampos.aspx.cs.txt”


12.     Na página “cadCategoria.aspx” adicione referência aos
        métodos da Master Page:

      <%@ MasterType VirtualPath="~/miniCurso.Master" %>
1.   No projeto “miniCursoAPW” clicar com o botão direito e
     selecionar “Add->New Item”.

2.   Na categoria “Visual C#” selecione “Web Content Form”, dê
     o nome de “cadProduto” e selecione a “miniCurso.Master”
     como Master Page.
3.   Na página “cadProduto.aspx” dentro do “Content2” adicione
     o código abaixo:

* Ver em “cadProduto_Content2.aspx.txt”
4.   Na página “cadProduto.aspx” dentro do “Content3” adicione
     o código abaixo:

* Ver em “cadProduto_Content3.aspx.txt”

5.   Na página “cadProduto.aspx.cs” adicionar os seguintes
     “usings”:
       using miniCursoDCL;
       using miniCursoDAO;


6.   Instancie os seguintes objetos:
       Produto produto = new Produto();
       ProdutoDAO produtoDAO = new ProdutoDAO();
7.    Ainda na página “cadProduto.aspx.cs” criar o método
      “Cadastrar”.
        Ver arquivo “cadProduto_Cadastrar.aspx.cs.txt”


8.    Criar o método “Atualizar”.
        Ver arquivo “cadProduto_Atualizar.aspx.cs.txt”


9.    Criar o método “Editar”.
        Ver arquivo “cadProduto_Editar.aspx.cs.txt”


10.   Criar o método “Excluir”
        Ver arquivo “cadProduto_Excluir.aspx.cs.txt”
11.   Criar o método “limparCampos”.
         Ver arquivo “cadProduto_LimparCampos.aspx.cs.txt”


12.   Na página “cadProduto.aspx” adicione referência para os
      métodos da Master Page:

      <%@ MasterType VirtualPath="~/miniCurso.Master" %>
Criar a classe DCL para Cliente
Criar a classe DAO para Cliente
Criar o CRUD para o Cliente
Criar a classe DCL para Contato
Criar a classe DAO para Contato
Criar o CRUD para o Contato
Testar
As empresas vem procurando formas de
  desenvolver softwares cada vez mais
  rápido.
Por outro lado, os desenvolvedores devem
  fazer softwares realmente funcionais,
  que ao final realmente atendam os
  objetivos do seu cliente.
Diemesleno Souza Carvalho
www.diemesleno.com.br
diemesleno@gmail.com
(67) 9225-7484
Campo Grande
Mato Grosso do Sul
Brasil

More Related Content

Similar to Programação para Web com MVC

Desenvolvimento web com vs2012: Uma visão geral
Desenvolvimento web com vs2012: Uma visão geralDesenvolvimento web com vs2012: Uma visão geral
Desenvolvimento web com vs2012: Uma visão geralHelder Lopes
 
Mini curso introdutório ao Django
Mini curso introdutório ao DjangoMini curso introdutório ao Django
Mini curso introdutório ao DjangoVinicius Mendes
 
Backbone.js - Desenvolvimento de Sistemas Corporativos - UFPB - Campus IV
Backbone.js - Desenvolvimento de Sistemas Corporativos - UFPB - Campus IVBackbone.js - Desenvolvimento de Sistemas Corporativos - UFPB - Campus IV
Backbone.js - Desenvolvimento de Sistemas Corporativos - UFPB - Campus IVJoão Helis Bernardo
 
Palestra MVC - Online tech day 2010
Palestra MVC - Online tech day 2010Palestra MVC - Online tech day 2010
Palestra MVC - Online tech day 2010Alexandre Tarifa
 
Aprendendo Na Prática: Aplicativos Web Com Asp.Net MVC em C# e Entity Framewo...
Aprendendo Na Prática: Aplicativos Web Com Asp.Net MVC em C# e Entity Framewo...Aprendendo Na Prática: Aplicativos Web Com Asp.Net MVC em C# e Entity Framewo...
Aprendendo Na Prática: Aplicativos Web Com Asp.Net MVC em C# e Entity Framewo...Daniel Makiyama
 
Treinamento Básico de Django
Treinamento Básico de DjangoTreinamento Básico de Django
Treinamento Básico de DjangoLeandro Zanuz
 
programacao-c-banco-de-dados
programacao-c-banco-de-dadosprogramacao-c-banco-de-dados
programacao-c-banco-de-dadosRaul Dias
 
INTEROPERABILIDADE ENTRE SISTEMAS DE INFORMAÇÃO HETEROGÊNEOS NA PRÁTICA – NO ...
INTEROPERABILIDADE ENTRE SISTEMAS DE INFORMAÇÃO HETEROGÊNEOS NA PRÁTICA – NO ...INTEROPERABILIDADE ENTRE SISTEMAS DE INFORMAÇÃO HETEROGÊNEOS NA PRÁTICA – NO ...
INTEROPERABILIDADE ENTRE SISTEMAS DE INFORMAÇÃO HETEROGÊNEOS NA PRÁTICA – NO ...clesiojunior
 
Aula 1 view model livedata e databinding.pptx
Aula 1   view model livedata e databinding.pptxAula 1   view model livedata e databinding.pptx
Aula 1 view model livedata e databinding.pptxRicardo Ogliari
 
JasperReports Tecnicas de geracao_de_relatorios1
JasperReports  Tecnicas de geracao_de_relatorios1JasperReports  Tecnicas de geracao_de_relatorios1
JasperReports Tecnicas de geracao_de_relatorios1Sliedesharessbarbosa
 
Introdução ao framework CodeIgniter
Introdução ao framework CodeIgniterIntrodução ao framework CodeIgniter
Introdução ao framework CodeIgniterAnderson Gonçalves
 

Similar to Programação para Web com MVC (20)

Tutorial +login+mvc
Tutorial +login+mvcTutorial +login+mvc
Tutorial +login+mvc
 
Desenvolvimento web com vs2012: Uma visão geral
Desenvolvimento web com vs2012: Uma visão geralDesenvolvimento web com vs2012: Uma visão geral
Desenvolvimento web com vs2012: Uma visão geral
 
Mini curso introdutório ao Django
Mini curso introdutório ao DjangoMini curso introdutório ao Django
Mini curso introdutório ao Django
 
Vb
VbVb
Vb
 
Backbone.js - Desenvolvimento de Sistemas Corporativos - UFPB - Campus IV
Backbone.js - Desenvolvimento de Sistemas Corporativos - UFPB - Campus IVBackbone.js - Desenvolvimento de Sistemas Corporativos - UFPB - Campus IV
Backbone.js - Desenvolvimento de Sistemas Corporativos - UFPB - Campus IV
 
Django Módulo Básico Parte II
Django Módulo Básico Parte IIDjango Módulo Básico Parte II
Django Módulo Básico Parte II
 
Palestra MVC - Online tech day 2010
Palestra MVC - Online tech day 2010Palestra MVC - Online tech day 2010
Palestra MVC - Online tech day 2010
 
Aprendendo Na Prática: Aplicativos Web Com Asp.Net MVC em C# e Entity Framewo...
Aprendendo Na Prática: Aplicativos Web Com Asp.Net MVC em C# e Entity Framewo...Aprendendo Na Prática: Aplicativos Web Com Asp.Net MVC em C# e Entity Framewo...
Aprendendo Na Prática: Aplicativos Web Com Asp.Net MVC em C# e Entity Framewo...
 
Aplicacoes Rapidas Para Web Com Django
Aplicacoes Rapidas Para Web Com DjangoAplicacoes Rapidas Para Web Com Django
Aplicacoes Rapidas Para Web Com Django
 
Treinamento Básico de Django
Treinamento Básico de DjangoTreinamento Básico de Django
Treinamento Básico de Django
 
Aula1
Aula1Aula1
Aula1
 
CONEXÃO BANCO DE DADOS MYSQL COM JAVA
CONEXÃO BANCO DE DADOS MYSQL  COM JAVACONEXÃO BANCO DE DADOS MYSQL  COM JAVA
CONEXÃO BANCO DE DADOS MYSQL COM JAVA
 
programacao-c-banco-de-dados
programacao-c-banco-de-dadosprogramacao-c-banco-de-dados
programacao-c-banco-de-dados
 
INTEROPERABILIDADE ENTRE SISTEMAS DE INFORMAÇÃO HETEROGÊNEOS NA PRÁTICA – NO ...
INTEROPERABILIDADE ENTRE SISTEMAS DE INFORMAÇÃO HETEROGÊNEOS NA PRÁTICA – NO ...INTEROPERABILIDADE ENTRE SISTEMAS DE INFORMAÇÃO HETEROGÊNEOS NA PRÁTICA – NO ...
INTEROPERABILIDADE ENTRE SISTEMAS DE INFORMAÇÃO HETEROGÊNEOS NA PRÁTICA – NO ...
 
Componentes para a Web
Componentes para a WebComponentes para a Web
Componentes para a Web
 
Aula 1 view model livedata e databinding.pptx
Aula 1   view model livedata e databinding.pptxAula 1   view model livedata e databinding.pptx
Aula 1 view model livedata e databinding.pptx
 
Usando a data grid wpf
Usando a data grid wpfUsando a data grid wpf
Usando a data grid wpf
 
JasperReports Tecnicas de geracao_de_relatorios1
JasperReports  Tecnicas de geracao_de_relatorios1JasperReports  Tecnicas de geracao_de_relatorios1
JasperReports Tecnicas de geracao_de_relatorios1
 
Introdução ao framework CodeIgniter
Introdução ao framework CodeIgniterIntrodução ao framework CodeIgniter
Introdução ao framework CodeIgniter
 
Python 06
Python 06Python 06
Python 06
 

More from Diemesleno Souza Carvalho

O mercado e as oportunidades na terceira revolução insdustrial
O mercado e as oportunidades na terceira revolução insdustrialO mercado e as oportunidades na terceira revolução insdustrial
O mercado e as oportunidades na terceira revolução insdustrialDiemesleno Souza Carvalho
 
Expandindo as oportunidades com Software Livre
Expandindo as oportunidades com Software LivreExpandindo as oportunidades com Software Livre
Expandindo as oportunidades com Software LivreDiemesleno Souza Carvalho
 
Internet das coisas na terceira revolução industrial
Internet das coisas na terceira revolução industrialInternet das coisas na terceira revolução industrial
Internet das coisas na terceira revolução industrialDiemesleno Souza Carvalho
 
E commerce: Da escolha do nicho até a primeira venda
E commerce:  Da escolha do nicho até a primeira vendaE commerce:  Da escolha do nicho até a primeira venda
E commerce: Da escolha do nicho até a primeira vendaDiemesleno Souza Carvalho
 
Computação física com Arduino e Raspberry Pi
Computação física com Arduino e Raspberry PiComputação física com Arduino e Raspberry Pi
Computação física com Arduino e Raspberry PiDiemesleno Souza Carvalho
 
Iniciando no mundo mobile - Programando para android
Iniciando no mundo mobile - Programando para androidIniciando no mundo mobile - Programando para android
Iniciando no mundo mobile - Programando para androidDiemesleno Souza Carvalho
 
Desenvolvendo aplicacoes para TV Digital Interativa
Desenvolvendo aplicacoes para TV Digital InterativaDesenvolvendo aplicacoes para TV Digital Interativa
Desenvolvendo aplicacoes para TV Digital InterativaDiemesleno Souza Carvalho
 
Desenvolvimento para tv digital interativa [ dia 2]
Desenvolvimento para tv digital interativa [ dia 2]Desenvolvimento para tv digital interativa [ dia 2]
Desenvolvimento para tv digital interativa [ dia 2]Diemesleno Souza Carvalho
 
Desenvolvimento para tv digital interativa [ dia 1]
Desenvolvimento para tv digital interativa [ dia 1]Desenvolvimento para tv digital interativa [ dia 1]
Desenvolvimento para tv digital interativa [ dia 1]Diemesleno Souza Carvalho
 
Desenvolvimento para tv digital interativa [ dia 3]
Desenvolvimento para tv digital interativa [ dia 3]Desenvolvimento para tv digital interativa [ dia 3]
Desenvolvimento para tv digital interativa [ dia 3]Diemesleno Souza Carvalho
 

More from Diemesleno Souza Carvalho (18)

Classificador de imagens com redes neurais
Classificador de imagens com redes neuraisClassificador de imagens com redes neurais
Classificador de imagens com redes neurais
 
O mercado e as oportunidades na terceira revolução insdustrial
O mercado e as oportunidades na terceira revolução insdustrialO mercado e as oportunidades na terceira revolução insdustrial
O mercado e as oportunidades na terceira revolução insdustrial
 
Minicurso android
Minicurso androidMinicurso android
Minicurso android
 
Desenvolvimento Android
Desenvolvimento AndroidDesenvolvimento Android
Desenvolvimento Android
 
Expandindo as oportunidades com Software Livre
Expandindo as oportunidades com Software LivreExpandindo as oportunidades com Software Livre
Expandindo as oportunidades com Software Livre
 
Internet das coisas na terceira revolução industrial
Internet das coisas na terceira revolução industrialInternet das coisas na terceira revolução industrial
Internet das coisas na terceira revolução industrial
 
E commerce: Da escolha do nicho até a primeira venda
E commerce:  Da escolha do nicho até a primeira vendaE commerce:  Da escolha do nicho até a primeira venda
E commerce: Da escolha do nicho até a primeira venda
 
Programando com Python
Programando com PythonProgramando com Python
Programando com Python
 
Internet das Coisas
Internet das CoisasInternet das Coisas
Internet das Coisas
 
Computação física com Arduino e Raspberry Pi
Computação física com Arduino e Raspberry PiComputação física com Arduino e Raspberry Pi
Computação física com Arduino e Raspberry Pi
 
Iniciando no mundo mobile - Programando para android
Iniciando no mundo mobile - Programando para androidIniciando no mundo mobile - Programando para android
Iniciando no mundo mobile - Programando para android
 
Palestra TV Digital Interativa - Hora Livre
Palestra TV Digital Interativa - Hora LivrePalestra TV Digital Interativa - Hora Livre
Palestra TV Digital Interativa - Hora Livre
 
Palestra tv digital interativa Dourados
Palestra tv digital interativa DouradosPalestra tv digital interativa Dourados
Palestra tv digital interativa Dourados
 
Desenvolvendo aplicacoes para TV Digital Interativa
Desenvolvendo aplicacoes para TV Digital InterativaDesenvolvendo aplicacoes para TV Digital Interativa
Desenvolvendo aplicacoes para TV Digital Interativa
 
Desenvolvimento para tv digital interativa [ dia 2]
Desenvolvimento para tv digital interativa [ dia 2]Desenvolvimento para tv digital interativa [ dia 2]
Desenvolvimento para tv digital interativa [ dia 2]
 
Desenvolvimento para tv digital interativa [ dia 1]
Desenvolvimento para tv digital interativa [ dia 1]Desenvolvimento para tv digital interativa [ dia 1]
Desenvolvimento para tv digital interativa [ dia 1]
 
Desenvolvimento para tv digital interativa [ dia 3]
Desenvolvimento para tv digital interativa [ dia 3]Desenvolvimento para tv digital interativa [ dia 3]
Desenvolvimento para tv digital interativa [ dia 3]
 
ApresentaçAo Joomla
ApresentaçAo JoomlaApresentaçAo Joomla
ApresentaçAo Joomla
 

Programação para Web com MVC

  • 1. Diemesleno Souza Carvalho – Innfomaster T.I.
  • 2. Sobre o mini-curso Objetivos Programação para Web Linguagens dinâmicas e estáticas Programação em camadas – MVC Desenvolvimento sistema exemplo Conclusão
  • 3. Não é um curso de algoritmo. Não é um curso de programação. Não é um curso de Orientação a Objetos. Não é um curso de estrutura de dados. Não é um curso de SQL. Não é um curso de design. É um curso que engloba todos os ítens listados acima de forma básica e algumas coisas a mais.
  • 4. Não é torna-lo um expert em desenvolvimento para web. É sim, fazê-lo compreender melhor o processo de desenvolvimento de softwares para a internet de forma ágil.
  • 5. Diferente da programação ‘Desktop’ Extremamente complexa Extremamente dinâmica Extremamente trabalhosa Extremamente prazerosa
  • 6. Linguagens dinâmicas Rodam do lado do servidor (Server Side) Interagem com banco de dados C#, Java, PHP, Python, Ruby, Lua Linguagens estáticas Rodam do lado do cliente (Client Side) Interagem com o usuário Javascript, CSS
  • 7. M Model Representa o modelo de dados dos objetos Mantêm as regras de negócios dos objetos V View Representa a parte visual da aplicação Web, Desktop, Mobile C Controller Controla as ações entre o model e a view
  • 8. Criar banco de dados (1) Criar tabelas no banco (2) Criar a solução (3) Criar um projeto Web Application (4) Criar um projeto Class Library (DAO) (5) Criar um projeto Class Library (DCL)(6) Criar um arquivo dbml (7)
  • 9. Conectar à base de dados (8) Mapear banco no dbml (9) Configurar o web.config (10) Configurar referências (11) Criar a classe Recursos (DCL) (12) Criar a BaseDCL.class (13) Criar a BaseDAO.class (14) Criar a classe Categoria (DCL) (15) Criar a classe CategoriaDAO (DAO) (16)
  • 10. Criar a classe Produto (DCL) (17) Criar a classe ProdutoDAO (DAO) (18) Criar a master page (19) Configurar a master page (20) Criar a página com CRUD da Categoria (21) Criar a página com CRUD do Produto (22) Testar a aplicação (23) Finalizar aplicação (24) Preparar a publicação (25)
  • 11. 1. Abrir o SQL Management. 2. Em “Security” clicar com botão direito em “Login” e selecionar “new login”. 3. Criar p usuario “sistemadba” com senha “515t3m4db4”. 4. Em Databases, clicar com botão direito em “new database”. 5. Definir “miniCurso” para o nome.
  • 12. 1. Ainda no SQL Management 2. Clique com o botão direito no banco criado e selecione “New Query”. 3. Copie o conteúdo do arquivo miniCurso.SQL para a query e execute. 4. Confira se as tabelas foram criadas. 5. Feche o SQL Management.
  • 13. 1. Abra o Visual Studio 2008. 2. Clique em “File->New->Project”. 3. Na guia “Other Project Types” selecione “Visual Studio Solutions”. 4. Dê o nome de miniCursoSLN.
  • 14. 1. Em “Solution Explorer” clique com o botão direito na solução e selecione “Add->New Project”. 2. Na guia “Visual C#” selecione “Web->ASP.NET Web Application” . 3. Dê o nome de “miniCursoAPW”.
  • 15. 1. Em “Solution Explorer” clique com o botão direito na solução e selecione “Add->New Project”. 2. Na guia “Visual C#” selecione “Windows->Class Library” . 3. Dê o nome de “miniCursoDAO”.
  • 16. 1. Em “Solution Explorer” clique com o botão direito na solução e selecione “Add->New Project”. 2. Na guia “Visual C#” selecione “Windows->Class Library” . 3. Dê o nome de “miniCursoDCL”.
  • 17. 1. Em “Solution Explorer” clique com o botão direito no projeto “miniCursoDCL” e selecione “Add-> New Item”. 2. Selecione a categoria “Data->LINQ to SQL CLASSES” . 3. Dê o nome de “miniCurso”.
  • 18. 1. Em “Server Explorer” clique com o botão direito em “Data Conections” e selecione “Add Conection”. 2. Em “Server name” coloque o nome do servidor de banco de dados “nomeMaquinaSQLEXPRESS”. 3. Selecione a opção “Use SQL Server Authentication”. 4. Em “User name” coloque “sistemadba”. 5. Em “Password” coloque “515t3m4db4” (Save my password). 6. Em “Select or enter a database name” digite “miniCurso”. 7. Clique em “Test Connection”
  • 19. 1. Em “Server Explorer” expanda as tabelas do banco “miniCurso” da conexão criada. 2. Selecione todas as tabelas e arraste para o arquivo “miniCurso.dbml” aberto. 3. Salve o arquivo “miniCurso.dbml”. 4. Clique em “Build->Rebuild Solution”.
  • 20. 1. Em “Solution Explorer” abrir o arquivo “web.config” 2. Antes de fechar a tag </configSettings> adicione o conteúdo abaixo: <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <section name="miniCursoAPW.Properties.Settings“ type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false"/> </sectionGroup> 3. Abaixo da tag <system.web> adicionar: <globalization culture="pt-BR" uiCulture="pt-BR" enableClientBasedCulture="true"/>
  • 21. 4. Abaixo da tag </configSettings> adicione: <connectionStrings> <add name="ConnMiniCursoDesenvolvimento" connectionString="Data Source=NomeMaquinaSQLEXPRESS;Initial Catalog=miniCurso;Persist Security Info=True;User ID=sistemadba;Password=515t3m4db4" providerName="System.Data.SqlClient"/> <add name="ConnMiniCursoHomologacao" connectionString="Data Source=NomeMaquinaSQLEXPRESS;Initial Catalog=miniCurso;Persist Security Info=True;User ID=sistemadba;Password=515tem4db4" providerName="System.Data.SqlClient"/> <add name="ConnMiniCursoProducao" connectionString="Data Source=NomeMaquinaSQLEXPRESS;Initial Catalog=miniCurso;Persist Security Info=True;User ID=sistemadba;Password=515t3m4db4" providerName="System.Data.SqlClient"/> </connectionStrings>
  • 22. 5. Na tag <compilation debug> colocar como “true” 6. Na tag <authentication mode> colocar como “Forms” 7. Antes de fechar a tag <httpHandlers> adicionar: <add path="Reserved.ReportViewerWebControl.axd" verb="*" type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" validate="false"/> 8. Antes de fechar a tag </configuration> adicionar: <appSettings> <add key="AppAmbiente" value="Desenvolvimento"/> <add key="VirtualPath" value=""/> </appSettings> <system.web> <httpRuntime maxRequestLength="102400"/> </system.web>
  • 23. 1. No “Solution Explorer” expanda o projeto miniCursoAPW e no diretório “References” adicione as seguintes: AjaxControlToolkit miniCursoDAO miniCursoDCL System.Runtime.Serialization System.ServiceModel System.Transactions 2. Expanda agora o projeto miniCursoDAO e adicione as seguintes referências: miniCursoDCL System.configuration System.Data.Linq System.Transactions
  • 24. 3. Expanda o projeto miniCursoDCL e adicione as seguintes referencias: System.configuration System.Drawing System.Web
  • 25. 1. No projeto miniCursoDCL crie uma nova classe com o nome “Recursos”. 2. Adicione os seguintes “usings”: using System.Web.UI.WebControls; using System.IO; using System.Web; using System.Configuration; using System.Web.Security; 3. Torne a classe “Pública”.
  • 26. 4. Crie o seguinte método: public static string RetornarStringConexao() { string AppAmbiente = ConfigurationManager.AppSettings["AppAmbiente"].ToString().ToLower(); string strConexao = string.Empty; switch (AppAmbiente) { case "producao": strConexao = ConfigurationManager.ConnectionStrings["ConnMiniCursoProducao"].ConnectionString; break; case "homologacao": strConexao = ConfigurationManager.ConnectionStrings["ConnMiniCursoHomologacao"].ConnectionString; break; default: strConexao = ConfigurationManager.ConnectionStrings["ConnMiniCursoDesenvolvimento"].ConnectionString; break; } return strConexao; }
  • 27. 4. Dentro do projeto “miniCursoDCL” crie uma classe com o nome de “BaseDCL”. 5. Adicione os seguintes “usings”: using System.Runtime.Remoting.Messaging; using miniCursoDCL; 6. Altere o namespace para “miniCursoBaseDCL”. 7. Altere o tipo da classe para “Publica Abstrata”. 8. Crie a seguinte variavel dentro do método da classe: internal miniCursoDataContext sdc = (miniCursoDataContext)CallContext.GetData("miniCursoDataContext");
  • 28. 9. Logo abaixo da variável criada, crie o método abaixo: public BaseDCL() { if (sdc == null) { sdc = new miniCursoDataContext(Recursos.RetornarStringConexao()); CallContext.SetData("miniCursoDataContext", sdc); } }
  • 29. 1. No projeto miniCursoDAO crie uma classe com o nome “BaseDAO”. 2. Adicione os seguintes “usings”: using System.Runtime.Remoting.Messaging; using miniCursoDCL; 3. Mude o namespace para “miniCursoBaseDAO”. 4. Troque o tipo da classe para “Pública Abstrata”. 5. Crie a seguinte variável dentro da classe: internal miniCursoDataContext dataContext = (miniCursoDataContext)CallContext.GetData("miniCursoDataContext");
  • 30. 6. Crie o seguinte método logo abaixo da variável criada anteriormente: public BaseDAO() { if (dataContext == null) { dataContext = new miniCursoDataContext(Recursos.RetornarStringConexao()); CallContext.SetData("miniCursoDataContext", dataContext); } }
  • 31. 1. Dentro do projeto “miniCursoDCL” crie uma classe com o nome “Categoria”. 2. Adicione o seguinte “using”: using miniCursoBaseDCL; 3. Mude o tipo da classe para “Pública Parcial” e extenda a classe “BaseDCL”.
  • 32. 4. Crie o seguinte método dentro da classe: public bool Validar() { try { bool flag = true; if (string.IsNullOrEmpty(this.desCategoria)) { flag = false; } return flag; } catch (Exception) { throw; } }
  • 33. 1. Dentro do projeto “miniCursoDAO” crie uma classe com o nome “CategoriaDAO”. 2. Adicione os seguintes “usings” using System.ComponentModel; using miniCursoBaseDAO; using miniCursoDCL; 3. Torne a classe “Pública” e extenda a classe BaseDAO 4. Adicione logo acima do nome da classe o seguinte: [System.ComponentModel.DataObject]
  • 34. 5. Dentro do projeto “miniCursoDAO” crie uma classe com o nome “. 6. Crie o seguinte método (Select com filtro): [DataObjectMethod(DataObjectMethodType.Select, false)] public List<Categoria> ObterListaComFiltro() { var query = (from c in dataContext.Categorias where c.flaStatus != 'E' select c); return query.ToList(); }
  • 35. 7. Crie o seguinte método (Select sem filtro): [DataObjectMethod(DataObjectMethodType.Select, false)] public List<Categoria> ObterLista() { var query = (from c in dataContext.Categorias select c); return query.ToList(); }
  • 36. 7. Crie o seguinte método (Select Por Código): public Categoria buscaPorChave(int idCategoria) { try { Categoria tpCategoria = dataContext.Categorias.Where(tr => tr.idCategoria = idCategoria).SingleOrDefault(); if (tpCategoria != null) { return tpCategoria; } else { return null; } } catch (Exception) { throw; } }
  • 37. 7. Crie o seguinte método (Insert): [DataObjectMethod(DataObjectMethodType.Insert, false)] public void Inserir(Categoria tpCategoria) { try { if (tpCategoria.Validar()) { dataContext.Categorias.InsertOnSubmit(tpCategoria); dataContext.SubmitChanges(); } } catch { throw; } }
  • 38. 7. Crie o seguinte método (Update): [DataObjectMethod(DataObjectMethodType.Update, false)] public void Alterar(Categoria tpCategoria) { try { Categoria categoria = buscaPorChave(tpCategoria.idCategoria); if (categoria != null) { categoria.desCategoria = tpCategoria.desCategoria; if (categoria.Validar()) { dataContext.SubmitChanges(); } } } catch (Exception) { throw; } }
  • 39. 7. Crie o seguinte método (Delete - Lógico): public bool exclui(int idCategoria) { bool atualizou = false; try { Categoria tpCategoria = dataContext.Categorias.Where(tr => tr.idCategoria == idCategoria).SingleOrDefault(); if (tpCategoria != null) { tpCategoria.flaStatus = 'E‘; dataContext.SubmitChanges(); atualizou = true; } } catch (Exception) { throw; } return atualizou; }
  • 40. 1. No projeto “miniCursoDCL” crie uma classe com o nome “Produto”. 2. Adicione o seguinte “using”: using miniCursoBaseDCL; 3. Modifique a classe para “Pública Parcial” e extenda a classe BaseDCL.
  • 41. 4. Dentro da classe, crie o seguinte método: public bool Validar() { try { bool flag = true; if (string.IsNullOrEmpty(this.desProduto)) { flag = false; } return flag; } catch (Exception) { throw; } }
  • 42. 1. Dentro do projeto “miniCursoDAO” crie a classe “ProdutoDAO”. 2. Adicione os seguintes “usings”: using System.ComponentModel; using miniCursoBaseDAO; using miniCursoDCL; 3. Modifique o tipo da classe para “Pública” e extenda a classe “BaseDAO”. 4. Adicione a seguinte linha logo acima do nome da classe: [System.ComponentModel.DataObject]
  • 43. 5. Crie o seguinte método. (Select com filtro) [DataObjectMethod(DataObjectMethodType.Select, false)] public List<Produto> ObterListaComFiltro() { var query = (from p in dataContext.Produtos where p.flaStatus != 'E' select p); return query.ToList(); }
  • 44. 5. Crie o seguinte método. (Select sem filtro) [DataObjectMethod(DataObjectMethodType.Select, false)] public List<Produto> ObterListaComFiltro() { var query = (from p in dataContext.Produtos select p); return query.ToList(); }
  • 45. 5. Crie o seguinte método. (Select com join) [DataObjectMethod(DataObjectMethodType.Select, false)] public object ObterListaModify() { var query = (from p in dataContext.Produtos join c in dataContext.Produtos on p.idProduto equals c.idProduto select new { idProduto = p.idProduto, desProduto = p.desProduto, idCategoria = p.idCategoria, desCategoria = c.desCategoria, flaStatus = p.flaStatus }); return query.ToList(); }
  • 46. 5. Crie o seguinte método. (Select por chave) public Produto buscaPorChave(int idProduto) { try { Produto tpProduto = dataContext.Produtos.Where(tr => tr.idProduto == idProduto).SingleOrDefault(); if (tpProduto != null) { return tpProduto; } else { return null; } } catch (Exception) { throw; } }
  • 47. 5. Crie o seguinte método. (Insert) [DataObjectMethod(DataObjectMethodType.Insert, false)] public void Inserir(Produto tpProduto) { try { if (tpProduto.Validar()) { dataContext.Produtos.InsertOnSubmit(tpProduto); dataContext.SubmitChanges(); } } catch { throw; } }
  • 48. 5. Crie o seguinte método. (Update) [DataObjectMethod(DataObjectMethodType.Update, false)] public void Alterar(Produto tpProduto) { try { Produto produto = buscaPorChave(tpProduto.idProduto); if (produto != null) { produto.desProduto = tpProduto.desProduto; produto.idCategoria = tpProduto.idCategoria; if (produto.Validar()) { dataContext.SubmitChanges(); } } } catch (Exception) { throw; } }
  • 49. 5. Crie o seguinte método. (Delete - Lógico) public bool exclui(int idProduto) { bool atualizou = false; try { Produto tpProduto = dataContext.Produtos.Where(tr => tr.idProduto == idProduto).SingleOrDefault(); if (tpProduto != null) { tpProduto.flaStatus = 'E'; dataContext.SubmitChanges(); atualizou = true; } } catch (Exception) { throw; } return atualizou; }
  • 50. 1. No projeto “miniCursoAPW” clique com o botão direito e selecione “Add->New Item”. 2. Na categoria “Visual C#” selecione Master Page e dê o nome de “miniCurso”.
  • 51. 1. No projeto “miniCursoAPW” clique com o botão direito e selecione “Add->New Folder”. 2. Dê o nome de “css”. 3. Crie um novo diretório e chame de “images”. 4. Copie o arquivo “style.css” de dentro do diretório “css” em “Arquivos Auxiliares” para o diretório “css” do projeto criado. 5. Copie as imagens do diretório “images” dentro de “Arquivos Auxiliares” para o diretório “images” do projeto criado.
  • 52. 6. Na página “miniCurso.Master” apague o conteúdo da segunda linha para baixo. 7. Copie o conteúdo do arquivo “miniCurso.Master.txt” do diretório “Arquivos Auxiliares” para logo abaixo da primeira linha da página “miniCurso.Master”. 8. No arquivo “miniCurso.Master.cs” adicione os seguintes “usings”: using System.Data; using AjaxControlToolkit; using System.Configuration; using System.Drawing; using System.Web.UI.HtmlControls;
  • 53. 9. Copie o método do arquivo “miniCurso.Master.cs.txt” que está dentro do diretório “Arquivos Auxiliares” para o arquivo “miniCurso.Master.cs” do projeto logo abaixo do método “Page_Load”.
  • 54. 1. Clique com o botão direito no projeto “miniCursoAPW”, selecione “Add->New Item”. 2. Dentro da categoria “Visual C#” selecione “Web Content Form”, dê o nome de “cadCategoria” e selecione a “miniCurso.Master” como Master Page.
  • 55. 3. Na página “cadCategoria.aspx” dentro do “Content2” adicione o código abaixo: * Ver em “cadCategoria_Content2.aspx.txt”
  • 56. 4. Na página “cadCategoria.aspx” dentro do “Content3” adicione o código abaixo: * Ver em “cadCategoria_Content3.aspx.txt” 5. Na página “cadCategoria.aspx.cs” adicionar os seguintes “usings”: using miniCursoDCL; using miniCursoDAO; 6. Instancie os seguintes objetos: Categoria categoria = new Categoria(); CategoriaDAO categoriaDAO = new CategoriaDAO();
  • 57. 7. Ainda na página “cadCategoria.aspx.cs” criar o método “Cadastrar”. Ver arquivo “cadCategoria_Cadastrar.aspx.cs.txt” 8. Criar o método “Atualizar”. Ver arquivo “cadCategoria_Atualizar.aspx.cs.txt” 9. Criar o método “Editar”. Ver arquivo “cadCategoria_Editar.aspx.cs.txt” 10. Criar o método “Excluir” Ver arquivo “cadCategoria_Excluir.aspx.cs.txt”
  • 58. 11. Criar o método “limparCampos”. Ver arquivo “cadCategoria_LimparCampos.aspx.cs.txt” 12. Na página “cadCategoria.aspx” adicione referência aos métodos da Master Page: <%@ MasterType VirtualPath="~/miniCurso.Master" %>
  • 59. 1. No projeto “miniCursoAPW” clicar com o botão direito e selecionar “Add->New Item”. 2. Na categoria “Visual C#” selecione “Web Content Form”, dê o nome de “cadProduto” e selecione a “miniCurso.Master” como Master Page.
  • 60. 3. Na página “cadProduto.aspx” dentro do “Content2” adicione o código abaixo: * Ver em “cadProduto_Content2.aspx.txt”
  • 61. 4. Na página “cadProduto.aspx” dentro do “Content3” adicione o código abaixo: * Ver em “cadProduto_Content3.aspx.txt” 5. Na página “cadProduto.aspx.cs” adicionar os seguintes “usings”: using miniCursoDCL; using miniCursoDAO; 6. Instancie os seguintes objetos: Produto produto = new Produto(); ProdutoDAO produtoDAO = new ProdutoDAO();
  • 62. 7. Ainda na página “cadProduto.aspx.cs” criar o método “Cadastrar”. Ver arquivo “cadProduto_Cadastrar.aspx.cs.txt” 8. Criar o método “Atualizar”. Ver arquivo “cadProduto_Atualizar.aspx.cs.txt” 9. Criar o método “Editar”. Ver arquivo “cadProduto_Editar.aspx.cs.txt” 10. Criar o método “Excluir” Ver arquivo “cadProduto_Excluir.aspx.cs.txt”
  • 63. 11. Criar o método “limparCampos”. Ver arquivo “cadProduto_LimparCampos.aspx.cs.txt” 12. Na página “cadProduto.aspx” adicione referência para os métodos da Master Page: <%@ MasterType VirtualPath="~/miniCurso.Master" %>
  • 64.
  • 65. Criar a classe DCL para Cliente Criar a classe DAO para Cliente Criar o CRUD para o Cliente Criar a classe DCL para Contato Criar a classe DAO para Contato Criar o CRUD para o Contato Testar
  • 66.
  • 67. As empresas vem procurando formas de desenvolver softwares cada vez mais rápido. Por outro lado, os desenvolvedores devem fazer softwares realmente funcionais, que ao final realmente atendam os objetivos do seu cliente.
  • 68. Diemesleno Souza Carvalho www.diemesleno.com.br diemesleno@gmail.com (67) 9225-7484 Campo Grande Mato Grosso do Sul Brasil