SlideShare une entreprise Scribd logo
1  sur  30
Microsoft Academy Day




ADO.NET Entity Framework
Flavio Medeiros Sales – flavio@flaviomedeiros.com
Microsoft Academy Day – ANO II



Realização
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
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 versão extendida do SQL para EDM
•   Object Services
     – Adiciona gerenciamento de mudanças, identidade de objeto, attach / detach
•   LINQ to Entities
     – Uma implementação de LINQ sobre EDM
Entity Framework Overview
Entity Data Model

• Entity Data Model é um modelo conceitual de um escopo de
  problema
   – Um modelo de objetos, independente de estratégia de armazenamento
   – Entidades podem possuir tipos simples
       • Tipos de bancos de dados relacionais (Ex.: int)
   – Entidades podem conter tipos complexos
       • Tipos com múltiplos atributos (ex. endereço)
   – Os relacionamentos entre as entidades também são classes
Modelo de mapeamento

• Mapeamento entre o modelo conceitual e o modelo de
  armazenamento
• Modelo de mapeamento implementado via três arquivos XML:
   – Cada um tem seu próprio vocabulário XSD
   – Esquema conceitual (CSDL)
   – Esquema de armazenamento (SSDL)
   – Esquema de mapeamento (MSL)
• Mapeamentos geralmente são gerados por ferramentas de
  automação
   – EDMGen.exe – ferramenta de linha de comando
   – Entity Designer – ferramenta gráfica
Mapeamento e Bancos de dados

• Os modelos de mapeamento suportam
   – Tabelas e visões como EntitySet
   – Restrições de chaves estrangeiras como AssociationSet
   – Stored Procedures como FunctionImport
   – Funções definidas pelo usuário (UDFs) como FunctionImport
   – Visões de cliente – similar à visão no banco de dados porém definido
     no nível do modelo de mapeamento com consultas específicas
Demo
USANDO ENTIDADES
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 *
Herança

• O mapeamento suporta herança no modelo conceitual
   – Tabela por hierarquia
   – Tabela por tipo
   – Tabela por tipo completo
• Inclui associações entre tipos derivados
Divisão 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 Física
    – Identificado por um discriminador na entidade
• Atributos divididos entre duas tabelas
    – Entidade criada a partir de um join
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 são suportados em todos os bancos de
  dados
   – O provedor define o mapeamento entre os tipos do EDM e do banco de
     dados
• Tipos definidos pelos usuários não são suportados
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 serviçosquot;
   – Trabalha sobre qualquer provedor de dados do ADO.NET
   – O implementador do provedor precisa suportar interfaces
     adicionais
   – Implementações para SQL Server e SQLCE
Porque um Entity Provider?

• Compatibilidade com o modelo existente
   – É possível atualizar o código atual para trabalhar com o
     EDM
• Várias ferramentas trabalham com probvedores
  ADO.NET
   – SQL Server Integration Services
   – SQL Server Reporting Services
   – Crystal Reports
Entity SQL

• Uma linguagem parecida com SQL, com algumas extensões
   – 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 além do SQL-1999
       • Ex. Expressões para analisar entidades
Entity SQL Extended Keywords
Keyword            Meaning
VALUE              Retorna o valor de uma entidade
REF                Retorna a referência para uma instância de entidade
DEREF              Retorna o valor a partir de uma referência de
                   entidade
NAVIGATE           Navega pelo relacionamento entre entidades
IS (NOT) TYPE OF   A expressão é do tipo ou de algum sub-tipo do tipo
                   sendo testado
TREAT              Trata o tipo informado como um tipo derivado
MULTISET           Constrói um multiset a partir de um conjunto de
                   valores
ROW                Constrói uma linha de tipo anônimo
ANYELEMENT         Retorna qualquer elemento como uma coleção multi-
                   valorada
FLATTEN            Converts collection of collections to a flat collection
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
Demo
ENTITY PROVIDER
Using the ADO.NET Entity
Provider

   // named connection points at model files
   using (EntityConnection con =
       new EntityConnection(quot;Name=Northwindquot;))
   {
     con.Open();
     // command uses eSQL
     using (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
        }
     }
   }
Object Services

• Atualmente o Entity Provider suporta somente consultas
• Ações CUD são implementadas via Object Services
• Object Services suporta
   – Gerenciamento de alterações
   – Object Identity
   – Substituição de INSERT/UPDATE/DELETE por stored procedures
   – Concorrência em nível de coluna para atualizaçãoes (UPDATE)
   – System.Transactions ou transações explícitas
Object Query

• Object Query é uma classe genérica
   – ObjectQuery<T> é definidio em todas as entidades
   – Projeções usam ObjectQuery<DbDataRecord>
• Usa eSQL como linguagem de consulta
• Suporta parâmetros
• Execute retorna um ObjectResult<T>
   – MergeOption especifica as opções de identificação de objeto
       • AppendOnly
       • NoTracking
       • PreserveChanges
       • OverwriteChanges
Usando Object Services
  using (ObjectContext ctx = new
    ObjectContext(quot;Name=Northwindquot;))
  {
    ObjectQuery<Customers> query1 =
      ctx.CreateQuery<Customers>(
      quot;select value c from Northwind.Customers as cquot;);

      // query executes here
      ObjectResult<Customers> result = query1.Execute(
         MergeOption.NoTracking);

      ObjectQuery<Customers> query2 =
        ctx.CreateQuery<Customers>(
        quot;select value c from Northwind.Customers as cquot;);

      // query executes here
      foreach (Customers c in query2)
        Console.WriteLine(c.CustomerID);
  }
LINQ to Entities

• Object Services pode usar consultas eSQL
   – Sintaxe não verificável no cliente
   – Maior tendência a erros do que SQL porque é uma nova linguagem
• Object Services suporta LINQ to Entities
   – Sintaxe verificável
   – 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 usuário
Usando LINQ to Entities
  Northwind nw = new Northwind()

  // select entire entity
     var query2 = from c in nw.Customers
                  select c;

     foreach (var cs in query2)
       Console.WriteLine(quot;{0} {1}quot;,
                  cs.Customerid, cs.CustomerName);

  // simple projection
     var 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);
Revisão

• O Entity Framework usa um EDM como uma camada de
  armazenamento de dados
   – Possui seu próprio provedor de dados
   – Possui sua própria 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 implementação do LINQ para EDM e eSQL
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
Microsoft Academy Day – ANO II



Dúvidas
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
Microsoft Academy Day




ORBRIGADO !

Contenu connexe

En vedette (20)

Tutorial del gimp
Tutorial del gimpTutorial del gimp
Tutorial del gimp
 
Especies amenazadas
Especies amenazadasEspecies amenazadas
Especies amenazadas
 
The Hill Club
The Hill Club The Hill Club
The Hill Club
 
video Gerencia al Cambio
video Gerencia al Cambiovideo Gerencia al Cambio
video Gerencia al Cambio
 
Mini curso cirs 2010
Mini curso cirs 2010Mini curso cirs 2010
Mini curso cirs 2010
 
R2 l cultura clásica logroño
R2 l cultura clásica logroñoR2 l cultura clásica logroño
R2 l cultura clásica logroño
 
Gibi Descolado No 2 Educação
Gibi Descolado No 2 EducaçãoGibi Descolado No 2 Educação
Gibi Descolado No 2 Educação
 
Medoliques
MedoliquesMedoliques
Medoliques
 
Grupo 2
Grupo 2Grupo 2
Grupo 2
 
EXAMENES MARZO 2010
EXAMENES MARZO 2010EXAMENES MARZO 2010
EXAMENES MARZO 2010
 
Presentación1
Presentación1Presentación1
Presentación1
 
Estudiantes del siglo xxl en tcis
Estudiantes del siglo xxl  en tcisEstudiantes del siglo xxl  en tcis
Estudiantes del siglo xxl en tcis
 
Presentación
PresentaciónPresentación
Presentación
 
El origen del universo 2
El origen del universo 2El origen del universo 2
El origen del universo 2
 
Rossi Lifespace Curitiba - www.InvestImoveisCuritiba.com
Rossi Lifespace Curitiba - www.InvestImoveisCuritiba.comRossi Lifespace Curitiba - www.InvestImoveisCuritiba.com
Rossi Lifespace Curitiba - www.InvestImoveisCuritiba.com
 
Aeropuerto de Dubai
Aeropuerto de DubaiAeropuerto de Dubai
Aeropuerto de Dubai
 
II Encontro FamíLia Tamanin 1996
II Encontro FamíLia Tamanin 1996II Encontro FamíLia Tamanin 1996
II Encontro FamíLia Tamanin 1996
 
Que es un sistema operativo
Que es un sistema operativoQue es un sistema operativo
Que es un sistema operativo
 
Aquisição de dados
Aquisição de dadosAquisição de dados
Aquisição de dados
 
1 manualformacao internet_segura
1 manualformacao internet_segura1 manualformacao internet_segura
1 manualformacao internet_segura
 

Similaire à Microsoft Academy Day ADO.NET Entity Framework

Comparacao Estrategica sobre as Tecnologias de Acesso a Dados da Microsoft
Comparacao Estrategica sobre as Tecnologias de Acesso a Dados da MicrosoftComparacao Estrategica sobre as Tecnologias de Acesso a Dados da Microsoft
Comparacao Estrategica sobre as Tecnologias de Acesso a Dados da MicrosoftLuciano Condé
 
Apresentação em Projeto de Sistemas – Entity Framework
Apresentação em Projeto de Sistemas – Entity FrameworkApresentação em Projeto de Sistemas – Entity Framework
Apresentação em Projeto de Sistemas – Entity FrameworkMatteus Barbosa
 
Desenvolvimento em .Net - Introducao A Framework
Desenvolvimento em .Net - Introducao A FrameworkDesenvolvimento em .Net - Introducao A Framework
Desenvolvimento em .Net - Introducao A FrameworkVitor Silva
 
Desenvolvendo aplicações com Angular e Laravel no Back-end
Desenvolvendo aplicações com Angular e Laravel no Back-endDesenvolvendo aplicações com Angular e Laravel no Back-end
Desenvolvendo aplicações com Angular e Laravel no Back-endGiovanny Valente
 
Framework Entities - Apresentação da Defesa da Dissertacao
Framework Entities - Apresentação da Defesa da DissertacaoFramework Entities - Apresentação da Defesa da Dissertacao
Framework Entities - Apresentação da Defesa da DissertacaoMarcius Brandão
 
Apostilava Java EE 5 - 2007
Apostilava Java EE 5 - 2007Apostilava Java EE 5 - 2007
Apostilava Java EE 5 - 2007Rafael Benevides
 
Desenvolvimento web com .NET Core - Meetup São Carlos
Desenvolvimento web com .NET Core - Meetup São CarlosDesenvolvimento web com .NET Core - Meetup São Carlos
Desenvolvimento web com .NET Core - Meetup São CarlosRodolfo Fadino Junior
 
Desenvolvimento em .Net - Acesso a Dados
Desenvolvimento em .Net - Acesso a DadosDesenvolvimento em .Net - Acesso a Dados
Desenvolvimento em .Net - Acesso a DadosVitor Silva
 
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
 
Palestra Plataforma .NET na ETEC Marília
Palestra Plataforma .NET na ETEC MaríliaPalestra Plataforma .NET na ETEC Marília
Palestra Plataforma .NET na ETEC MaríliaElvis Fusco
 
Spring + Tapestry Um novo paradigma de desenvolvimento web
Spring + Tapestry Um novo paradigma de desenvolvimento webSpring + Tapestry Um novo paradigma de desenvolvimento web
Spring + Tapestry Um novo paradigma de desenvolvimento webelliando dias
 
Introdução ao ASP.NET 3.5 - Campus Party Brasil 2009
Introdução ao ASP.NET 3.5 - Campus Party Brasil 2009Introdução ao ASP.NET 3.5 - Campus Party Brasil 2009
Introdução ao ASP.NET 3.5 - Campus Party Brasil 2009Ramon Durães
 
Consumindo dados via web service no android
Consumindo dados via web service no androidConsumindo dados via web service no android
Consumindo dados via web service no androidAlexandre Antunes
 
Programação em Camadas com Entity Framework 4
Programação em Camadas com Entity Framework 4Programação em Camadas com Entity Framework 4
Programação em Camadas com Entity Framework 4Luciano Condé
 
Deep Dive sobre Entity Framework
Deep Dive sobre Entity FrameworkDeep Dive sobre Entity Framework
Deep Dive sobre Entity FrameworkLuciano Condé
 

Similaire à Microsoft Academy Day ADO.NET Entity Framework (20)

Comparacao Estrategica sobre as Tecnologias de Acesso a Dados da Microsoft
Comparacao Estrategica sobre as Tecnologias de Acesso a Dados da MicrosoftComparacao Estrategica sobre as Tecnologias de Acesso a Dados da Microsoft
Comparacao Estrategica sobre as Tecnologias de Acesso a Dados da Microsoft
 
Aula1
Aula1Aula1
Aula1
 
Apresentação em Projeto de Sistemas – Entity Framework
Apresentação em Projeto de Sistemas – Entity FrameworkApresentação em Projeto de Sistemas – Entity Framework
Apresentação em Projeto de Sistemas – Entity Framework
 
Desenvolvimento em .Net - Introducao A Framework
Desenvolvimento em .Net - Introducao A FrameworkDesenvolvimento em .Net - Introducao A Framework
Desenvolvimento em .Net - Introducao A Framework
 
Desenvolvendo aplicações com Angular e Laravel no Back-end
Desenvolvendo aplicações com Angular e Laravel no Back-endDesenvolvendo aplicações com Angular e Laravel no Back-end
Desenvolvendo aplicações com Angular e Laravel no Back-end
 
Framework Entities - Apresentação da Defesa da Dissertacao
Framework Entities - Apresentação da Defesa da DissertacaoFramework Entities - Apresentação da Defesa da Dissertacao
Framework Entities - Apresentação da Defesa da Dissertacao
 
JavaServer Faces
JavaServer FacesJavaServer Faces
JavaServer Faces
 
Apostilava Java EE 5 - 2007
Apostilava Java EE 5 - 2007Apostilava Java EE 5 - 2007
Apostilava Java EE 5 - 2007
 
Introdução ao Entity Framework 4
Introdução ao Entity Framework 4Introdução ao Entity Framework 4
Introdução ao Entity Framework 4
 
Desenvolvimento web com .NET Core - Meetup São Carlos
Desenvolvimento web com .NET Core - Meetup São CarlosDesenvolvimento web com .NET Core - Meetup São Carlos
Desenvolvimento web com .NET Core - Meetup São Carlos
 
ORM e EF
ORM e EFORM e EF
ORM e EF
 
DDD > Experiências
DDD > ExperiênciasDDD > Experiências
DDD > Experiências
 
Desenvolvimento em .Net - Acesso a Dados
Desenvolvimento em .Net - Acesso a DadosDesenvolvimento em .Net - Acesso a Dados
Desenvolvimento em .Net - Acesso a Dados
 
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
 
Palestra Plataforma .NET na ETEC Marília
Palestra Plataforma .NET na ETEC MaríliaPalestra Plataforma .NET na ETEC Marília
Palestra Plataforma .NET na ETEC Marília
 
Spring + Tapestry Um novo paradigma de desenvolvimento web
Spring + Tapestry Um novo paradigma de desenvolvimento webSpring + Tapestry Um novo paradigma de desenvolvimento web
Spring + Tapestry Um novo paradigma de desenvolvimento web
 
Introdução ao ASP.NET 3.5 - Campus Party Brasil 2009
Introdução ao ASP.NET 3.5 - Campus Party Brasil 2009Introdução ao ASP.NET 3.5 - Campus Party Brasil 2009
Introdução ao ASP.NET 3.5 - Campus Party Brasil 2009
 
Consumindo dados via web service no android
Consumindo dados via web service no androidConsumindo dados via web service no android
Consumindo dados via web service no android
 
Programação em Camadas com Entity Framework 4
Programação em Camadas com Entity Framework 4Programação em Camadas com Entity Framework 4
Programação em Camadas com Entity Framework 4
 
Deep Dive sobre Entity Framework
Deep Dive sobre Entity FrameworkDeep Dive sobre Entity Framework
Deep Dive sobre Entity Framework
 

Microsoft Academy Day ADO.NET Entity Framework

  • 1. Microsoft Academy Day ADO.NET Entity Framework Flavio Medeiros Sales – flavio@flaviomedeiros.com
  • 2. Microsoft Academy Day – ANO II Realização
  • 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 versão extendida do SQL para EDM • Object Services – Adiciona gerenciamento de mudanças, identidade de objeto, attach / detach • LINQ to Entities – Uma implementação de LINQ sobre EDM
  • 6. Entity Data Model • Entity Data Model é um modelo conceitual de um escopo de problema – Um modelo de objetos, independente de estratégia de armazenamento – Entidades podem possuir tipos simples • Tipos de bancos de dados relacionais (Ex.: int) – Entidades podem conter tipos complexos • Tipos com múltiplos atributos (ex. endereço) – Os relacionamentos entre as entidades também são classes
  • 7. Modelo de mapeamento • Mapeamento entre o modelo conceitual e o modelo de armazenamento • Modelo de mapeamento implementado via três arquivos XML: – Cada um tem seu próprio vocabulário XSD – Esquema conceitual (CSDL) – Esquema de armazenamento (SSDL) – Esquema de mapeamento (MSL) • Mapeamentos geralmente são gerados por ferramentas de automação – EDMGen.exe – ferramenta de linha de comando – Entity Designer – ferramenta gráfica
  • 8. Mapeamento e Bancos de dados • Os modelos de mapeamento suportam – Tabelas e visões como EntitySet – Restrições de chaves estrangeiras como AssociationSet – Stored Procedures como FunctionImport – Funções definidas pelo usuário (UDFs) como FunctionImport – Visões de cliente – similar à visão no banco de dados porém definido no nível do modelo de mapeamento com consultas específicas
  • 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. Herança • O mapeamento suporta herança no modelo conceitual – Tabela por hierarquia – Tabela por tipo – Tabela por tipo completo • Inclui associações entre tipos derivados
  • 12. Divisão 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 Física – 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 são suportados em todos os bancos de dados – O provedor define o mapeamento entre os tipos do EDM e do banco de dados • Tipos definidos pelos usuários não são 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 serviçosquot; – Trabalha sobre qualquer provedor de dados do ADO.NET – O implementador do provedor precisa suportar interfaces adicionais – Implementações para SQL Server e SQLCE
  • 15. Porque um Entity Provider? • Compatibilidade com o modelo existente – É possível atualizar o código atual para trabalhar com o EDM • Várias 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 extensões – 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 além do SQL-1999 • Ex. Expressões para analisar entidades
  • 17. Entity SQL Extended Keywords Keyword Meaning VALUE Retorna o valor de uma entidade REF Retorna a referência para uma instância de entidade DEREF Retorna o valor a partir de uma referência de entidade NAVIGATE Navega pelo relacionamento entre entidades IS (NOT) TYPE OF A expressão é do tipo ou de algum sub-tipo do tipo sendo testado TREAT Trata o tipo informado como um tipo derivado MULTISET Constrói um multiset a partir de um conjunto de valores ROW Constrói uma linha de tipo anônimo ANYELEMENT Retorna qualquer elemento como uma coleção multi- valorada FLATTEN Converts 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
  • 20. Using the ADO.NET Entity Provider // named connection points at model files using (EntityConnection con = new EntityConnection(quot;Name=Northwindquot;)) { con.Open(); // command uses eSQL using (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 • Ações CUD são implementadas via Object Services • Object Services suporta – Gerenciamento de alterações – Object Identity – Substituição de INSERT/UPDATE/DELETE por stored procedures – Concorrência em nível de coluna para atualizaçãoes (UPDATE) – System.Transactions ou transações explícitas
  • 22. Object Query • Object Query é uma classe genérica – ObjectQuery<T> é definidio em todas as entidades – Projeções usam ObjectQuery<DbDataRecord> • Usa eSQL como linguagem de consulta • Suporta parâmetros • Execute retorna um ObjectResult<T> – MergeOption especifica as opções de identificação de objeto • AppendOnly • NoTracking • PreserveChanges • OverwriteChanges
  • 23. Usando Object Services using (ObjectContext ctx = new ObjectContext(quot;Name=Northwindquot;)) { ObjectQuery<Customers> query1 = ctx.CreateQuery<Customers>( quot;select value c from Northwind.Customers as cquot;); // query executes here ObjectResult<Customers> result = query1.Execute( MergeOption.NoTracking); ObjectQuery<Customers> query2 = ctx.CreateQuery<Customers>( 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 não verificável no cliente – Maior tendência a erros do que SQL porque é uma nova linguagem • Object Services suporta LINQ to Entities – Sintaxe verificável – 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 usuário
  • 25. Usando LINQ to Entities Northwind nw = new Northwind() // select entire entity var query2 = from c in nw.Customers select c; foreach (var cs in query2) Console.WriteLine(quot;{0} {1}quot;, cs.Customerid, cs.CustomerName); // simple projection var 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. Revisão • O Entity Framework usa um EDM como uma camada de armazenamento de dados – Possui seu próprio provedor de dados – Possui sua própria 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 implementação 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 II Dúvidas
  • 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