mad ii - ado.net entity framework com sql server 2008

of 30 /30
Microsoft Academy Day ADO.NET Entity Framework Flavio Medeiros Sales – [email protected]

Author: flavio-medeiros-sales

Post on 25-May-2015

1.737 views

Category:

Documents


1 download

Embed Size (px)

DESCRIPTION

Apresentação usada no MAD II(Microsoft Academy Day) sobre o ADO.NET Entity Framework integrado ao SQL Server 2008. A apresentação é parte do SQL Server 2008 Community Launch. Acesso à demonstrações em http://flaviomedeiros.com/2008/12/22/madii-adonet-entity-framework-material-disponvel/

TRANSCRIPT

  • 1. Microsoft Academy Day ADO.NET Entity Framework Flavio Medeiros Sales [email protected]

2. Microsoft Academy Day ANO IIRealizao 3. Agenda Modelagem de Entidades Mapeando do SQL Server 2008 para Objetos ADO.NET e EntityClient A linguagem SQL para entidades Object Context LINQ to Entities 4. Entity Framework O Entity Data Model (EDM) Descreve o esquema conceitual Modelo de mapeamento Esquema conceitual de armazenamento no banco de dados O Entity Data Provider Um provedor ADO.NET independente de banco de dados para o EDM Entity SQL Uma verso extendida do SQL para EDM Object Services Adiciona gerenciamento de mudanas, identidade de objeto, attach / detach LINQ to Entities Uma implementao de LINQ sobre EDM 5. Entity Framework Overview 6. Entity Data Model Entity Data Model um modelo conceitual de um escopo de problema Um modelo de objetos, independente de estratgia de armazenamento Entidades podem possuir tipos simples Tipos de bancos de dados relacionais (Ex.: int) Entidades podem conter tipos complexos Tipos com mltiplos atributos (ex. endereo) Os relacionamentos entre as entidades tambm so classes 7. Modelo de mapeamento Mapeamento entre o modelo conceitual e o modelo de armazenamento Modelo de mapeamento implementado via trs arquivos XML: Cada um tem seu prprio vocabulrio XSD Esquema conceitual (CSDL) Esquema de armazenamento (SSDL) Esquema de mapeamento (MSL) Mapeamentos geralmente so gerados por ferramentas de automao EDMGen.exe ferramenta de linha de comando Entity Designer ferramenta grfica 8. Mapeamento e Bancos de dados Os modelos de mapeamento suportam Tabelas e vises como EntitySet Restries de chaves estrangeiras como AssociationSet Stored Procedures como FunctionImport Funes definidas pelo usurio (UDFs) como FunctionImport Vises de cliente similar viso no banco de dados porm definidono nvel do modelo de mapeamento com consultas especficas 9. Demo USANDO ENTIDADES 10. Tipos de objeto e estruturas Entity Container - Possui Entity Sets e Association Sets Entity Set - Possui Entidades Tipo Entity o objeto de dados principal Chave de Entidade (Entity Key) requerido para o tipo Entity Propriedades Tipos simples ou complexos Association Set Relacionamernto entre entidades Inclui auto-relacionamento 0..1 para 0..1 0..1 para 1 0..1 para * * para * 11. Herana O mapeamento suporta herana no modelo conceitual Tabela por hierarquia Tabela por tipo Tabela por tipo completo Inclui associaes entre tipos derivados 12. Diviso de entidades Os atributos de uma entidade podem ser divididos entre duas tabelas Entidade Cliente composta por linhas de Tabela Cliente de Internet Tabela Cliente Loja Fsica Identificado por um discriminador na entidade Atributos divididos entre duas tabelas Entidade criada a partir de um join 13. Entidades e tipos de dados O EDM suporta um conjunto limitado de tipos primitivos Binary, Byte, Boolean, SByte Int16, Int32, Int64 Decimal, Double, Single DateTime, TimeSpan, DateTimeOffset String (Unicode) Guid Nem todos os tipos de dados so suportados em todos os bancos de dados O provedor define o mapeamento entre os tipos do EDM e do banco dedados Tipos definidos pelos usurios no so suportados 14. Entity Provider Entity Provider nada mais do que um provedor de dados do ADO.NET O banco de dados deste provedor o EDM Publica o mesmo modelo do provedor ADO.NET EntityConnection EntityCommand Um provedor de serviosquot; Trabalha sobre qualquer provedor de dados do ADO.NET O implementador do provedor precisa suportar interfacesadicionais Implementaes para SQL Server e SQLCE 15. Porque um Entity Provider? Compatibilidade com o modelo existente possvel atualizar o cdigo atual para trabalhar com oEDM Vrias ferramentas trabalham com probvedores ADO.NET SQL Server Integration Services SQL Server Reporting Services Crystal Reports 16. Entity SQL Uma linguagem parecida com SQL, com algumas extenses Baseada em texto, como o SQL Adiciona o conceito de objeto para o SQL Alguns conceitos definidos pelo SQL-1999 Ex. SELECT um objeto inteiro Vai alm do SQL-1999 Ex. Expresses para analisar entidades 17. Entity SQL Extended Keywords KeywordMeaning VALUERetorna o valor de uma entidade REFRetorna a referncia para uma instncia de entidade DEREFRetorna o valor a partir de uma referncia deentidade NAVIGATE Navega pelo relacionamento entre entidades IS (NOT) TYPE OF A expresso do tipo ou de algum sub-tipo do tiposendo testado TREATTrata o tipo informado como um tipo derivado MULTISET Constri um multiset a partir de um conjunto devalores ROWConstri uma linha de tipo annimo ANYELEMENT Retorna qualquer elemento como uma coleo multi-valorada FLATTENConverts collection of collections to a flat collection 18. Entity SQL and Entity Provider Entity SQL is the query language of the Entity Provider EntityCommands use eSQL Objects returns as DataRecord(s) Simple Types Row Types Object Instances Relational and Object Concepts Supported eSQL is parsed into a CommandTree Provider neutral Provider must turn CommandTree into database-specific SQL statements 19. Demo ENTITY PROVIDER 20. Using the ADO.NET Entity Provider // named connection points at model filesusing (EntityConnection con =new EntityConnection(quot;Name=Northwindquot;)){con.Open();// command uses eSQLusing (EntityCommand cmd = new EntityCommand( quot;SELECT VALUE c FROM Northwind.Customersquot;, con)){ using (EntityDataReader rdr = cmd.ExecuteReader(CommandBehavior.SequentialAccess)) {// DataReader has a variety of shapes// process DataReader here }}} 21. Object Services Atualmente o Entity Provider suporta somente consultas Aes CUD so implementadas via Object Services Object Services suporta Gerenciamento de alteraes Object Identity Substituio de INSERT/UPDATE/DELETE por stored procedures Concorrncia em nvel de coluna para atualizaoes (UPDATE) System.Transactions ou transaes explcitas 22. Object Query Object Query uma classe genrica ObjectQuery definidio em todas as entidades Projees usam ObjectQuery Usa eSQL como linguagem de consulta Suporta parmetros Execute retorna um ObjectResult MergeOption especifica as opes de identificao de objeto AppendOnly NoTracking PreserveChanges OverwriteChanges 23. Usando Object Services using (ObjectContext ctx = new ObjectContext(quot;Name=Northwindquot;)) { ObjectQuery query1 = ctx.CreateQuery( quot;select value c from Northwind.Customers as cquot;);// query executes here ObjectResult result = query1.Execute(MergeOption.NoTracking);ObjectQuery query2 = ctx.CreateQuery( quot;select value c from Northwind.Customers as cquot;);// query executes here foreach (Customers c in query2) Console.WriteLine(c.CustomerID); } 24. LINQ to Entities Object Services pode usar consultas eSQL Sintaxe no verificvel no cliente Maior tendncia a erros do que SQL porque uma nova linguagem Object Services suporta LINQ to Entities Sintaxe verificvel Poder do LINQ sobre o EDM LINQ to Entities suporta uma parte do eSQL A maioria dos operadores de consulta do LINQ LINQ pode ser estendido pelo usurio 25. Usando LINQ to Entities Northwind nw = new Northwind()// select entire entityvar query2 = from c in nw.Customers select c; foreach (var cs in query2)Console.WriteLine(quot;{0} {1}quot;, cs.Customerid, cs.CustomerName);// simple projectionvar query2 = from c in nw.Customers select new {CID=c.CustomerID, CName=c.CompanyName }; foreach (var cs in query2)Console.WriteLine(quot;{0} {1}quot;, cs.CID, cs.CName); 26. Reviso O Entity Framework usa um EDM como uma camada de armazenamento de dados Possui seu prprio provedor de dados Possui sua prpria linguagem de consultas Object Services usado para trabalhar com entidades como objetos.NET Camada de mapeamento Mapeia o modelo relacional para o EDM Qualquer banco de dados relacional LINQ to Entities Uma implementao do LINQ para EDM e eSQL 27. Recursos extras An Entity Data Model for Relational Data Part I: Defining the Entity Data Model , Code Magazine http://www.code-magazine.com/Article.aspx?quickid=990712022 An Entity Data Model for Relational Data Part II: Mapping an Entity Data Model to a Relational Store , Code Magazine http://www.code-magazine.com/Article.aspx?quickid=990712032 Programming Against the ADO.NET Entity Framework, Code Magazine http://www.code-magazine.com/Article.aspx?quickid=990712042 28 28. Microsoft Academy Day ANO IIDvidas 29. Microsoft Academy Day ANO II Links dos parceiros www.linhadecodigo.com.br www.devmedia.com.br www.lanlink.com.br www.ivia.com.br www.secrel.com.br www.culminis.org www.ineta.org www.officeceara.com.br www.microsoft.com.br www.flaviomedeiros.com 30. Microsoft Academy Day ORBRIGADO !