Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

ORM - TDC Porto Alegre 2014 Trilha .NET

964 views

Published on

Apresentação feita na trilha .NET de Porto Alegre em Outubro 2014.
Nesta Apresentação falei sobre o início do ORM, o foco no cliente para adoção de frameworks de acesso a dados.
Uso de TSQL, consultas personalizadas, SPs, Orm....

Published in: Technology
  • Be the first to comment

ORM - TDC Porto Alegre 2014 Trilha .NET

  1. 1. Globalcode – Open4education ORM Trilha – .NET Jorge Maia
  2. 2. Jorge Maia  Cientista da Computação;  20+ anos entre TI e Dev  Últimos 6 com uso de metodologias ágeis;  Especialista em Desenvolvimento, Arquitetura e ALM  Entusiasta de Hardware e sistemas reconfiguráveis;  Fundador do CrazyTechGuys, devDF.NET; Globalcode – Open4education
  3. 3. Globalcode – Open4education @CrazyTechGuys
  4. 4. Globalcode – Open4education Agenda Vamos Voltar no Tempo (DAL X SP) ADO.NET ORM? Quais ORMs para .NET nativos Código no Banco? CTE, Funções TSQL VisualStudio L2S LazyLoad
  5. 5. Globalcode – Open4education Antes de Começar… Usuário em primeiro lugar Tempo Adequado Informações Confiáveis Tecnologia Adequada http://www.helloerik.com/
  6. 6. Globalcode – Open4education DAL X SP Meados de 1990… Delphi, VB, CGI, ASP…
  7. 7. Globalcode – Open4education Bancos Conectados Bom e velho ASP… Dim cnn As new ADODB.Connection cnn.Open "Provider=Microsoft.Jet.OLEDB.3.51;" & _ "Data Source=C:nwind.mdb; “ Fazia as Operações e fechava a conexão com a base cnn.Close
  8. 8. Globalcode – Open4education Então… ADO.NET Mais eficiente! Desconectado! Suporte a XML Nativo
  9. 9. ORM | O/RM | OR mapping “Object Relational Mapping é uma técnica de programação que abstrai o mapeamento entre um conjunto de objetos e um sistema de banco de dados relacional” Globalcode – Open4education String sql = "SELECT ... FROM persons WHERE id = 10"; DbCommand cmd = new DbCommand(connection, sql); Result res = cmd.Execute(); String name = res[0]["FIRST_NAME"]; String sql = "SELECT ... FROM persons WHERE id = 10"; DbCommand cmd = new DbCommand(connection, sql); Result res = cmd.Execute(); String name = res[0]["FIRST_NAME"]; Pessoa p = repositorio.PegarPessoa(1531); string Nome = p.Nome; Pessoa p = repositorio.PegarPessoa(1531); string Nome = p.Nome; Usamos a Wikipedia
  10. 10. Globalcode – Open4education Por que Usar ORM Mais nativo para o Progamador TSQL é tratado como simples, mas…. DRY – Don’t Repeat Yourself Código mais limpo (sanitização) Manutenibilidade
  11. 11. Globalcode – Open4education CRUD Operação Código SQL Create Repositorio.Incluir(cliente); Insert into Clientes (nome,telefone) Values (“jorge”, “9119-4929”) Read Repositorio.ListarClientes(); Select * from Clientes Update Repositorio.Atualizar(cliente); Update Clientes set nome =“Jorge Maia” Where nome = “jorge” Delete Repositorio.Delete(cliente); Delete from Clientes Where nome = “Jorge Maia”
  12. 12. Globalcode – Open4education .NET Acesso a Dados
  13. 13. Globalcode – Open4education ADO.NET using(SqlConnection conn = new SqlConnection("Connection String")) { using (SqlCommand comm = new SqlCommand("Select * from Customers")) { conn.Open(); SqlDataReader reader = conn.ExecuteReader(); DataTable dt = new DataTable("New Table"); dt.Load(reader); } }
  14. 14. LINQ2SQL using (NorthwindDataContext db = new NorthwindDataContext()) { IEnumerable<Customer> custs = from c in db.Customers Globalcode – Open4education select c; foreach (Customer c in custs) { Console.WriteLine(c.CompanyName); } }
  15. 15. LINQ2SQL using (NorthwindDataContext db = new NorthwindDataContext()) { IEnumerable<Customer> custs = db.Customers.Take(10).ToList(); Globalcode – Open4education foreach (Customer c in custs) { Console.WriteLine(c.CompanyName); } }
  16. 16. Globalcode – Open4education Não Existe Almoço Grátis
  17. 17. Globalcode – Open4education Recursos?
  18. 18. Globalcode – Open4education Usar ou Não o Banco? Views com alguns cálculos (Regras)? Stored Procedures? Triggers? Indices? XML?
  19. 19. TSQL Diversas funções que além de ajudar na performance, facilitam manutenção; Crie Views e leve algumas coisas para o Banco; Utilize “coisas” nativas do SQL SERVER; Globalcode – Open4education
  20. 20. Globalcode – Open4education Vamos Buscar dados…
  21. 21. Globalcode – Open4education Lead / Lag USE AdventureWorks2014 GO SELECT s.SalesOrderID,s.SalesOrderDetailID,s.OrderQty, LEAD(SalesOrderDetailID) OVER (ORDER BY SalesOrderDetailID) Posterior, LAG(SalesOrderDetailID) OVER (ORDER BY SalesOrderDetailID) Anterior FROM Sales.SalesOrderDetail s WHERE SalesOrderID IN (43670, 43669, 43667, 43663) ORDER BY s.SalesOrderID,s.SalesOrderDetailID,s.OrderQty
  22. 22. Globalcode – Open4education Ranking Vendas por Local
  23. 23. Globalcode – Open4education Dense Rank SELECT i.ProductID, p.Name, i.LocationID, i.Quantity ,DENSE_RANK() OVER (PARTITION BY i.LocationID ORDER BY i.Quantity DESC) AS Rank FROM Production.ProductInventory AS i INNER JOIN Production.Product AS p ON i.ProductID = p.ProductID WHERE i.LocationID BETWEEN 3 AND 4 ORDER BY i.LocationID;
  24. 24. CTE Common Table Expressions Tabelas Temporárias tem melhor performance que uma subquery. Permite Joins, Encapsulamento de transformações, agrupamentos, contagens… Globalcode – Open4education
  25. 25. Um pouco de código no Visual Studio… Globalcode – Open4education
  26. 26. Globalcode – Open4education Muito Obrigado! www.jorgemaia.com.br www.facebook.com/jorgeasmaia @jorgemaia

×