Mini curso de c#.net

68
Diemesleno Souza Carvalho – Innfomaster T.I.

description

Mini curso de C#.NET ministrado para funcionários da Empresa de Saneamento de Mato Grosso do Sul e da InnfoMaster.

Transcript of Mini curso de c#.net

  • 1. Diemesleno Souza Carvalho Innfomaster T.I.
  • 2. Sobre o mini-cursoObjetivosProgramao para WebLinguagens dinmicas e estticasProgramao em camadas MVCDesenvolvimento sistema exemploConcluso
  • 3. No um curso de algoritmo.No um curso de programao.No um curso de Orientao a Objetos.No um curso de estrutura de dados.No um curso de SQL.No um curso de design. um curso que engloba todos os tens listados acima de forma bsica e algumas coisas a mais.
  • 4. No 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 programao DesktopExtremamente complexaExtremamente dinmicaExtremamente trabalhosaExtremamente prazerosa
  • 6. Linguagens dinmicas Rodam do lado do servidor (Server Side) Interagem com banco de dados C#, Java, PHP, Python, Ruby, LuaLinguagens estticas Rodam do lado do cliente (Client Side) Interagem com o usurio Javascript, CSS
  • 7. M Model Representa o modelo de dados dos objetos Mantm as regras de negcios dos objetosV View Representa a parte visual da aplicao Web, Desktop, MobileC Controller Controla as aes entre o model e a view
  • 8. Criar banco de dados (1)Criar tabelas no banco (2)Criar a soluo (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 referncias (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 pgina com CRUD da Categoria (21)Criar a pgina com CRUD do Produto (22)Testar a aplicao (23)Finalizar aplicao (24)Preparar a publicao (25)
  • 11. 1. Abrir o SQL Management.2. Em Security clicar com boto direito em Login e selecionar new login.3. Criar p usuario sistemadba com senha 515t3m4db4.4. Em Databases, clicar com boto direito em new database.5. Definir miniCurso para o nome.
  • 12. 1. Ainda no SQL Management2. Clique com o boto direito no banco criado e selecione New Query.3. Copie o contedo 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 boto direito na soluo 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 boto direito na soluo 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 boto direito na soluo 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 boto 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 boto 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 opo 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 conexo 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.config2. Antes de fechar a tag adicione o contedo abaixo:3. Abaixo da tag adicionar:
  • 21. 4. Abaixo da tag adicione:
  • 22. 5. Na tag colocar como true6. Na tag colocar como Forms7. Antes de fechar a tag adicionar:8. Antes de fechar a tag adicionar:
  • 23. 1. No Solution Explorer expanda o projeto miniCursoAPW e no diretrio References adicione as seguintes: AjaxControlToolkit miniCursoDAO miniCursoDCL System.Runtime.Serialization System.ServiceModel System.Transactions2. Expanda agora o projeto miniCursoDAO e adicione as seguintes referncias: 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 Pblica.
  • 26. 4. Crie o seguinte mtodo: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 mtodo da classe:internal miniCursoDataContext sdc = (miniCursoDataContext)CallContext.GetData("miniCursoDataContext");
  • 28. 9. Logo abaixo da varivel criada, crie o mtodo 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 Pblica Abstrata.5. Crie a seguinte varivel dentro da classe:internal miniCursoDataContext dataContext = (miniCursoDataContext)CallContext.GetData("miniCursoDataContext");
  • 30. 6. Crie o seguinte mtodo logo abaixo da varivel 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 Pblica Parcial e extenda a classe BaseDCL.
  • 32. 4. Crie o seguinte mtodo 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 Pblica e extenda a classe BaseDAO4. 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 mtodo (Select com filtro):[DataObjectMethod(DataObjectMethodType.Select, false)] public List ObterListaComFiltro() { var query = (from c in dataContext.Categorias where c.flaStatus != E select c); return query.ToList(); }
  • 35. 7. Crie o seguinte mtodo (Select sem filtro):[DataObjectMethod(DataObjectMethodType.Select, false)] public List ObterLista() { var query = (from c in dataContext.Categorias select c); return query.ToList(); }
  • 36. 7. Crie o seguinte mtodo (Select Por Cdigo):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 mtodo (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 mtodo (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 mtodo (Delete - Lgico):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 Pblica Parcial e extenda a classe BaseDCL.
  • 41. 4. Dentro da classe, crie o seguinte mtodo: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 Pblica e extenda a classe BaseDAO.4. Adicione a seguinte linha logo acima do nome da classe: [System.ComponentModel.DataObject]
  • 43. 5. Crie o seguinte mtodo. (Select com filtro)[DataObjectMethod(DataObjectMethodType.Select, false)] public List ObterListaComFiltro() { var query = (from p in dataContext.Produtos where p.flaStatus != E select p); return query.ToList(); }
  • 44. 5. Crie o seguinte mtodo. (Select sem filtro)[DataObjectMethod(DataObjectMethodType.Select, false)] public List ObterListaComFiltro() { var query = (from p in dataContext.Produtos select p); return query.ToList(); }
  • 45. 5. Crie o seguinte mtodo. (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 mtodo. (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 mtodo. (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 mtodo. (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 mtodo. (Delete - Lgico)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 boto 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 boto direito e selecione Add->New Folder.2. D o nome de css.3. Crie um novo diretrio e chame de images.4. Copie o arquivo style.css de dentro do diretrio css em Arquivos Auxiliares para o diretrio css do projeto criado.5. Copie as imagens do diretrio images dentro de Arquivos Auxiliares para o diretrio images do projeto criado.
  • 52. 6. Na pgina miniCurso.Master apague o contedo da segunda linha para baixo.7. Copie o contedo do arquivo miniCurso.Master.txt do diretrio Arquivos Auxiliares para logo abaixo da primeira linha da pgina 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 mtodo do arquivo miniCurso.Master.cs.txt que est dentro do diretrio Arquivos Auxiliares para o arquivo miniCurso.Master.cs do projeto logo abaixo do mtodo Page_Load.
  • 54. 1. Clique com o boto 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 pgina cadCategoria.aspx dentro do Content2 adicione o cdigo abaixo:* Ver em cadCategoria_Content2.aspx.txt
  • 56. 4. Na pgina cadCategoria.aspx dentro do Content3 adicione o cdigo abaixo:* Ver em cadCategoria_Content3.aspx.txt5. Na pgina 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 pgina cadCategoria.aspx.cs criar o mtodo Cadastrar. Ver arquivo cadCategoria_Cadastrar.aspx.cs.txt8. Criar o mtodo Atualizar. Ver arquivo cadCategoria_Atualizar.aspx.cs.txt9. Criar o mtodo Editar. Ver arquivo cadCategoria_Editar.aspx.cs.txt10. Criar o mtodo Excluir Ver arquivo cadCategoria_Excluir.aspx.cs.txt
  • 58. 11. Criar o mtodo limparCampos. Ver arquivo cadCategoria_LimparCampos.aspx.cs.txt12. Na pgina cadCategoria.aspx adicione referncia aos mtodos da Master Page:
  • 59. 1. No projeto miniCursoAPW clicar com o boto 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 pgina cadProduto.aspx dentro do Content2 adicione o cdigo abaixo:* Ver em cadProduto_Content2.aspx.txt
  • 61. 4. Na pgina cadProduto.aspx dentro do Content3 adicione o cdigo abaixo:* Ver em cadProduto_Content3.aspx.txt5. Na pgina 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 pgina cadProduto.aspx.cs criar o mtodo Cadastrar. Ver arquivo cadProduto_Cadastrar.aspx.cs.txt8. Criar o mtodo Atualizar. Ver arquivo cadProduto_Atualizar.aspx.cs.txt9. Criar o mtodo Editar. Ver arquivo cadProduto_Editar.aspx.cs.txt10. Criar o mtodo Excluir Ver arquivo cadProduto_Excluir.aspx.cs.txt
  • 63. 11. Criar o mtodo limparCampos. Ver arquivo cadProduto_LimparCampos.aspx.cs.txt12. Na pgina cadProduto.aspx adicione referncia para os mtodos da Master Page:
  • 64. Criar a classe DCL para ClienteCriar a classe DAO para ClienteCriar o CRUD para o ClienteCriar a classe DCL para ContatoCriar a classe DAO para ContatoCriar o CRUD para o ContatoTestar
  • 65. As empresas vem procurando formas de desenvolver softwares cada vez mais rpido.Por outro lado, os desenvolvedores devem fazer softwares realmente funcionais, que ao final realmente atendam os objetivos do seu cliente.
  • 66. Diemesleno Souza [email protected](67) 9225-7484Campo GrandeMato Grosso do SulBrasil