deep dive sobre entity framework

Post on 14-Jun-2015

510 Views

Category:

Technology

2 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Entity Framework 4.0

Luciano CondéArquiteto de Soluçõeshttp://blogs.msdn.com/condehttp://twitter.com/luconde

Agenda

Por que ORMs?O que é Entity FrameworkModelos no Entity FrameworkConsiderações

<1>

Acesso a dadosAcessando dados em 1990

ODBC, SQL embutido

Acessando dados em 2000ADO, Stored Procedures

Acessando dados em 2005ADO.NET, Datasets, DataReaders

Acessando dados em 2010ORM

Object Relational Mapping

O que é?Uma abstraçãoTécnica para mapear estruturas relacionais de bancos dados como objetos em linguagens OOEsconder detalhes de complexidade do acesso a tabelas

Por que?Produtividade em desenvolvimentoIndependência de banco de dados

ORM em Windows

DiversosNhibernateEntitySpacesOpen AccessDevForceXPO

Não há um “vencedor” em definitivo

Trajetória para um ORM by MS

Datasets Tipados – Entregue Objectspaces “v1” – Nunca entregue Objectspaces “v2” – Nunca entregue Microsoft Business Framework – nunca entregue WinFS – Nunca entregue LINQ TO SQL – Entregue (Novembro/2007) Entity Framework v1 – Entregue (Agosto/2008)

</1>

<2>

Evolução do .NET Framework

.NET 1.0 .NET 1.1 .NET 2.0

3.0

3.5

.NET 4

2002 2003 20102005-08

CLR 1.0 CLR 1.1 CLR 2.0 CLR 4

SP1

Entity Framework

Um ORM que separa o modelo conceitual do físicoPermite a programação OO sobre as entidades – herançaEF “como” um DALFeito para ser multi-bancoSuporta ações CRUD (views, procs e tables)Vários providers disponíveis

SQL Server, Oracle, Mysql, DB2…Suporta transação, concorrência, procs, views

Arquitetura

Entity Framework 1.0 - Recursos

Geração de modelo a partir de um banco de dados (database first)Operações CRUD estão simplificadasSuporte a LINQ (Linq To Entities)Possibilidade de trabalhar com diversos banco de dadosSuporte para SP (retornar, modificar)Ferramenta de Designer embutida

Entity Framework 1.0 - Dores

O EF designer!Model First não suportadoBaixo suporte para Stored ProceduresSem Pluralization/SingularizationForeign Keys escondidasLazy Loading não suportadoFalta de operadores LINQGeração do SQL a desejarSem suporte para POCO (Plain Old CLR Objects)Dificuldade em montagem de N-Tier

Entity Framework 4.0

Suporte para Model-firstPluralization automáticaForeign keys nos modelosSuporte para POCOLazy loadingGeração de código por T4IObjectSetVirtual SaveChangesObjectStateManager control

Self-tracking entitiesMelhoria da geração SQL Melhoria do suporte a LINQExecuteStoreQueryExecuteStoreCommandMelhoria no suporte a SPROCCode-First development (Versão em CTP)

</2>

<3>

Como começar?

• “banco de dados é a verdade”

Database

First

• “O modelo é a verdade”ModelFirst

• “O código é a verdade”CodeFirst

Banco de dados é a verdade

Onde eu uso?Você já tem um banco de dados definidoO banco de dados requer um controle próximo

Como eu uso?Importe o banco de dados para dentro do modelo EDMXUse os recursos do Entity Framework

Banco de dados

Modelo Código

Demo

O modelo é a verdade

Onde eu uso?Definir um modelo de classes sem se preocupar com o banco de dadosGerar o script a partir do modelo

Como eu uso?Gere o modelo EDMXGere o script do banco de dados

Modelo

Banco de dados

Código

Demo

O código é a verdade

Onde eu uso?Definir a suas próprias classesBanco de dados é apenas um detalhe de implementação

Como eu uso?Gere as classesGere o Object de Context

CódigoBanco de

dados

Demo

</3>

<4>

Considerações - ObjectContext

Você controlaPense no tempo de vida de ObjectContextAttached X Detached dos objetosPosso ter múltiplos EDMXs – Organização por cenários ou transações sem conhecimento mútuo

Considerações - Consultas

QueriesLinq to EntitiesEntity SQLQuerybuilder

Preferência para Linq to EntitiesLazy loading X Early loading

Considerações – Extensão

EntidadesPropriedades OnPropertyChange

ObjectContextSavingChangesOnContextCreated

Uso de DTOs para transportar os dadosConsidere o uso de T4Procs e views

Continuam sendo utilizadas

Considerações - Concorrência

Modelo otimistaEscolhas as colunas que deseja “monitorar” – Concurrence Mode para “Fixed”Implemente o tratamento da Exceção “OptimisticConcurrencyException”Em caso de conflito utilize o método Refresh para determinar quem tem a prioridadeVocê é quem controla a frequência de atualização

Considerações - TransaçãoImplícitas

Explícitas

Considerações – POCO, WCF

A existência das propriedades ChangeObjectStateUse self-trackings como acelerador para n-tierDesabilite o lazy loadingCuidado com as colisões de EntityKeyUsando o WCF habilite sempre o log para saber os problemas de conversão de tiposUse DTOs para auxiliar na redução da transferência de classes entre as camadasUse a geração de código T4 para facilitarEstude Proxies

</4>

Links

http://msdn.microsoft.com/en-us/magazine/ee236639.aspx - Boas práticas EF e arquitetura de acesso a dadoshttp://blogs.msdn.com/adonet - Time do Entity Frameworkhttp://blogs.msdn.com/efdesign - Time do Design do Entity Frameworkhttp://blogs.msdn.com/adonet/archive/2008/10/07/migrating-from-linq-to-sql-to-entity-framework-eager-loading.aspx - Migrando de Linq To sql para Entity Frameworkhttp://msdn.microsoft.com/en-us/magazine/cc163286.aspx- Modelando um Entity Data Modelhttp://msdn.microsoft.com/en-us/magazine/cc700340.aspx - Entity Framework sobre arquiteturas de n-layershttp://msdn.microsoft.com/en-us/magazine/cc507640.aspx

- Q & A de Entity Framework http://msdn.microsoft.com/en-us/library/bb399572.aspx 3

4

© 2010 Microsoft Corporation. All rights reserved. Microsoft, MSDN, the MSDN logo, and [list other trademarks referenced] are trademarks of the Microsoft group of companies.  The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation.  Because Microsoft must respond

to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. 

MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED, OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

top related